编译lm
① gcc 编译怎么加上-lm 选项,搜出来的答案真心看不懂啥意思,能不能说说具体步骤啊
程序中用到数学函数.
原本只要在程序中加上#include<math.h>头文件就可以了。但有的系统上的gcc不仅程序里要有include,编译的时候也要在指令后面加-lm
否则就会出错:
/tmp/cc4FFwdt.o(.text+0x126): In function `main':: undefined reference to `sqrt'/tmp/cc4FFwdt.o(.text+0x169): In function `main':: undefined reference to `数学函数名'collect2: ld returned 1 exit status
编译时使用方法:
gcc -o abc abc.c -lm
编译程序时得到undefined reference to 'xxxx'这样的错误提示
那你一定是缺少某个库,用 -l参数将库加入。
linux的库命名是一致的,一般为libxxx.so,或libxxx.a,libxxx.la,那么你要链接某个库就用-lxxx,去掉头lib及"."后面的so,la,a等即可。 同时,常见的库链接方法为: 数学库 -lm ; posix线程 -lpthread
② linux下C语言对编译报错‘expl’未定义的引用
可以查看编程手册,对里面提到的宏进行测试,看是否支持该函数:
比较简单的方法是加编译器参数: -std=c99
别忘了链接的时候加-lm
③ gcc编译命令中-lm是什么意思
链接名称为libm.o或者libm.so的库文件。
④ gcc编译带math.h的程序,加-lm参数也没用
报错的是ld阶段,表示链接失败,找不到squr函数,根本原因是找不到libm.so。跟math.h头文件没有任何关系,头文件有问题的话在预处理阶段编译之前就会报错了。
你的-lm估计加的地方不对,要确保在链接阶段添加,不是编译的时候。
⑤ ubuntu中编译C语言程序时使用数学函数时总是出问题编译不能通过,这要怎么解决呢
math在连接时需要添加参数,很久不搞linux的程序了,我映像是-o 编译时加上 -lm像下面这样:
gcc -lm -o xxx.out xxx.c
因为math.h不是C运行库函数,就像linux下线程函数库pthread.h也不是,都需要在编译时连接该库
如果你有IDE(如eclipse)+ GCC 开发C程序,可以在项目属性中编译命令中添加-lm,作用是一样的 (本人用VI很不熟练。。。)
楼主如果需要可以到www.eclipse.org下载IDE,不用手动添加Mingw和GCC,它已经全部搞定了,用起来很方便。
⑥ C语言用gedit编程结束用gcc编译时输入-lm是为了什么比如程序是a.c,编译gcc a.c -lm。在线等!
那是因为你的程序里面用到了数学函数吧?
也就是说用到了<math.h>
在gcc里面,需要手动链接数学函数库,所以要加上那句
纯手打
谢谢采纳
⑦ 我画了一个LM317直流稳压电源,但每次一编译LM317ADJ处都有问题,希望哪位好心的朋友帮忙解答
R3与R2应该有个接点吧 不知道你这是什么制图软件
⑧ gcc main.c bp_alg_api.c -lm -o test和gcc -lm main.c bp_alg_api.c -o test后者为何不能编译通过
库文件要放在目标文件后面才能链接到库里的符号
⑨ 在ubuntu下编程C包含了math.h,,编译的时候也加上了-lm,但是始终无法编译通过,找不到sin,求大神指点!
你的函数库可能不在通常的路径中 先查找你的math.h在哪里 whereis math.h 如果不在应该的路径, 后面加上-L/路径
⑩ g++编译参数 -lm 是什么意思
g++编译程序成为.o目标函数,然后需要和库函数连接到一起
-l是传递给link程序叫它连接某些库函数
-lm是连接数学库
如果没-lm那些三角函数啊,超越函数啊,都没法连接成功的