到书上出现gcc -lm 的选项,甚是不解,在网上查阅了一些资料,访问了一些论坛整理下。
初学linux和gcc,C代码调用math.h中的函数有问题,如sqrt函数。若如sqrt(3.0)则可以编译通过并运行正常,若如sqrt(n),这里n是定义好的double型变量,则不能编译通过,错误信息为:undefined reference to 'sqrt'。
像 sqrt(3.0); 这种调用,gcc 在编译时就可以将其替换为对应的值(gcc 优化的一部分),从而不需要链接 sqrt 所在的数学库 libm;而像 sqrt(n); 这种调用,一般无法做这种替换,因此需要链接 libm。

编译的时候,链接 数学库, -lptread 链接线程库等等,也可以使自己编译的库

Question: 编译程序时得到undefined reference to 'xxxx'这样的错误提示 
Answer: 那你一定是缺少某个库,用 -l参数将库加入。Linux的库命名是一致的,一般为libxxx.so,或libxxx.a,libxxx.la,那么你要链接某个库就用-lxxx,去掉头lib及"."后面的so,la,a等即可。 因为数学函数位于libm.so库文件中(通常在/lib目录下),-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找.
同时,常见的库链接方法为: 
数学库 -lm ; posix线程 -lpthread 
lc 是link libc
lm 是link libm
lz 是link libz

-ldl

#include <dlfcn.h>

dlopen(),dlclose() , dlerror() , dlsym() , the Base Definitions volume of IEEE Std 1003.1-2001, <dlfcn.h>

这些函数,动态库的相关部分

-dl ,是显式加载动态库的动态函数库

gcc -lm -ldl是什么意思?----包含动态链接库相关推荐

  1. Makefile 中gcc -lm -ldl是什么意思?

    gcc -lm -ldl是什么意思?----包含动态链接库 到书上出现gcc -lm 的选项,甚是不解,在网上查阅了一些资料,访问了一些论坛整理下. 初学linux和gcc,C代码调用math.h中的 ...

  2. linux gcc ldl,Makefile 中gcc -lm -ldl是什么意思?

    gcc -lm -ldl是什么意思?----包含动态链接库 到书上出现gcc -lm 的选项,甚是不解,在网上查阅了一些资料,访问了一些论坛整理下. 初学linux和gcc,C代码调用math.h中的 ...

  3. gcc -lm 是什么意思?

    今天看到书上出现gcc -lm 的选项,甚是不解,在网上查阅了一些资料,访问了一些论坛整理下. 初学linux和gcc,C代码调用math.h中的函数有问题,如sqrt函数.若如sqrt(3.0)则可 ...

  4. gcc - lm的含义

    使用math.h中声明的库函数还有一点特殊之处,gcc命令行必须加-lm选项,因为数学函数位于libm.so库文件中(这些库文件通常位于/lib目录下),-lm选项告诉编译器,我们程序中用到的数学函数 ...

  5. gcc指定头文件搜索路径及动态链接库搜索路径

    一.#include <>与#include "" #include <>直接到系统指定的某些目录中去找某些头文件. #include "&quo ...

  6. gcc编译多文件项目(包含静态库和动态库)

    gcc背景介绍 谈到 GCC,就不得不提 GNU 计划.GNU 全称 GNU's Not UNIX,又被称为"革奴计划",由理查德·斯托曼于 1983 年发起.GNU 计划的最终目 ...

  7. C++学习(四零三)-lm -ldl

    数学库 -lm ; posix线程 -lpthread  lc 是link libc lm 是link libm lz 是link libz ldl ,是显式加载动态库的动态函数库 如果你的程序中使用 ...

  8. GCC编译过程与动态链接库和静态链接库

    1. 库的介绍 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形式,可 ...

  9. dll = MinGW gcc 生成动态链接库 dll 的一些问题汇总

    MinGW gcc 生成动态链接库 dll 的一些问题汇总 https://blog.csdn.net/liyuanbhu/article/details/42612365 网络上关于用 MinGW  ...

最新文章

  1. Java Execution Process
  2. 应届前端面试——看这篇就够了(一)
  3. 也说 ASP.NET MVC的 Script 管理
  4. mysql error 1594_MySQL 1594 异常解决办法
  5. 如何获取MDC产品文档
  6. 高效读取大文件,再也不用担心 OOM 了!
  7. 点标记 高德地图_打尽渣男渣女的查岗神器?高德家人地图实测
  8. [git] 如何处理push失败的commit
  9. pcie ep 应该支持哪种interrupt_7寸国产笔记本评测,酷睿处理器+8G+256G,还支持手写笔...
  10. 1. mybatis批量插入数据
  11. python docx官网_【记录】尝试用DocxyGen为Python代码生成文档
  12. 好文!研究生高效阅读的五大原则
  13. delphi接口带上请求头是什么意思_Python接口自动化之Token详解及应用
  14. 【图像分割】基于matlab改进的细菌觅食算法双阈值图像分割【含Matlab源码 069期】
  15. 硬盘接口类型简洁区别及SCSI设备和SCSI磁盘的概念区别
  16. DFS POJ 1321 棋盘问题
  17. Battleship!
  18. Web全栈工程师技能树梳理
  19. ZUI + SSM框架下数据表格的使用
  20. PageHelper分页的坑,查出来的total有误,总是等于pageSize的值

热门文章

  1. php中with方法可以分页吗,分页显示详解(with php)
  2. python线性回归 置信区间_用Python绘制回归线、置信区间和预测区间
  3. 残酷的纲领计算机音乐,残酷な天使のテーゼ (残酷天使的行动纲领) (Director's Edit. Version|Instrumental)...
  4. 涉密文件不存放在保密柜的后果有多严重你知道吗?
  5. 中国地区表-mysql-包含钓鱼岛-2019年10月更新-[2]
  6. 斜率优化dp (P2365/P5785 任务安排)
  7. keil 删除一行快捷键
  8. 绿色农业智慧管理:农产品调度可视化平台
  9. TOM企业邮箱:界面极简,免费无限空间
  10. Word -- offic2010 --02 插入代码 稿纸 公式等