今天看到书上出现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

gcc -lm 是什么意思?相关推荐

  1. gcc -lm -ldl是什么意思?----包含动态链接库

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

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

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

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

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

  4. gcc - lm的含义

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

  5. 如何在linux的gcc中添加c语言的外部链接库(“比如说,math.h

    库是预编译的目标文件(object files)的集合,它们可被链接进程序.静态库以后缀为'.a'的特殊的存档文件(archive file)存储. 标准系统库可在目录 /usr/lib 与 /lib ...

  6. Linux常用20条命令

    Linux常用20条命令 假装这里有个标题 1.cd 2.ls 3.grep 4.find 5.cp 6.mv 7.rm 8.ps 9.kill 10.kill all 11.file 12.tar ...

  7. python 三分钟入门_Cython 三分钟入门教程

    作者:perrygeo 译者:赖勇浩(http://laiyonghao.com) 原文:http://www.perrygeo.net/wordpress/?p=116 我最喜欢的是Python,它 ...

  8. linux平台开发自学笔记(三)-代码编译

    linux和window编代码其实大致上是差不多的,不过在一些概念上还有差别,比如使用的库不一样,编译工具不一样,shell不一样,库的链接方式也不一样,这里做个简要的总结 1.库 window上有两 ...

  9. C++实现质因数分解

    质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数(质数):否则称为合数.根据算术基本定理,每一个比1大的整数,要 ...

最新文章

  1. OpenAI推新程序包:GPU适应十倍大模型仅需增加20%训练时间
  2. 心得体悟帖---16、哪些看起来很难做的事情真的不过如此
  3. Activity Recognition行为识别
  4. python manager模块_Python 并发模块
  5. Compound社区发起一项讨论 向5000名早期活跃用户发放总供应量5%的COMP代币
  6. 跨域推荐: 迁移学习和推荐系统的火花碰撞
  7. AIR Android开发--APK结构详解
  8. win10风格美化以及新建系统后优化
  9. flume流程之http-memory-hdfs
  10. java安装下载步骤_java下载安装教程
  11. Apache Pulsar PMC 成员翟佳入选「2020 中国开源先锋 33 人」
  12. electron +vue自定义点击最大化、最小化和关闭窗口事件功能
  13. 好好讲一讲:到底什么是Java架构师(含福利放送)
  14. 微信看一看小程序视频缓存到手机的位置
  15. java枚举值转化中文_多个枚举的国际化(枚举值的转换)
  16. WIN11如何一键返回桌面
  17. android apktool使用教程,Apktool 使用教程
  18. oracle 数据库如何建立索引 如何用索引?
  19. 选择 FreeBSD 而不是 Linux 的技术性原因
  20. 教学|3D建模之,游戏场景创建大致流程

热门文章

  1. 一款支持屏幕录制、镜像投屏的软件:Record It Pro中文版
  2. 干货|机器学习的数学基础
  3. electron 自动更新 热跟新
  4. 史上最全的Web安全相关网址汇总【转帖】
  5. 运算器的基本组成及操作过程
  6. 复制 python cache 文件到预训练模型
  7. DOM的readyState属性
  8. libvirt 详解(1)
  9. android span 下划线,Android TextView实现部分文字(超链接/Span)点击事件、变色、去除下划线...
  10. Java中将Map转换为JSON