分页: 1 / 1
Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
发表于 : 2014-05-02 10:25
由 芳草萋萋
前两天虚拟机刚装上Ubuntu 听说里面gcc是编译c/c++利器,闲来无事就写了几个简单程序,涉及到有数学运算函数,头文件也加了<math.h>编译时也没提找不到"math.h",但就是提示"sqrt()"函数未定义,看网上论坛说编译时j加上"-lm",也加了,但编译器还是一口咬定"sqrt()"函数未定义,但在fedora下加上"-lm"问题就解决了阿?为啥我的Ubuntu 14.04LTS不行,是俺没装好么?有图为证,我擦,真么上传图片阿,你们都是在linux下逛论坛还是Windows下,好不习惯!
Re: Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
发表于 : 2014-05-02 10:42
由 xcjzhd
去你的 /usr/lib 下面看看有没有libm 没有的话, 记得安装glibc.
Re: Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
发表于 : 2014-05-02 10:45
由 lainme
有没有安装libc6-dev?或者直接装build-essentials
Re: Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
发表于 : 2014-05-02 14:09
由 cjxgm
调整下参数顺序,试着把 -lm 放最后面
[bash]gcc -o a a.c -lm[/bash]
如果还不行,试试分步操作:
[bash]gcc -c -o a.o a.c # 编译
gcc -o a a.o -lm # 链接[/bash]
Re: Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
发表于 : 2014-05-02 14:13
由 cjxgm
xcjzhd 写了:去你的 /usr/lib 下面看看有没有libm 没有的话, 记得安装glibc.
没有 -lm 的话,那错误应该是
代码: 全选
/usr/bin/ld: cannot find -lm
collect2: error: ld returned 1 exit status
吧
更何况,有 -lc 会没有 -lm?
Re: Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
发表于 : 2014-05-04 10:43
由 芳草萋萋

4楼的办法解决了,虽然不知为什么, 感谢大家的帮忙,/usr/lib 下面确实没有libm文件但有以libm开头的6个文件夹还有很多文件,build-essentials是装了最新版的.
Re: Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
发表于 : 2014-05-04 19:15
由 cjxgm
芳草萋萋 写了:
4楼的办法解决了,虽然不知为什么, 感谢大家的帮忙,/usr/lib 下面确实没有libm文件但有以libm开头的6个文件夹还有很多文件,build-essentials是装了最新版的.
错误原因是参数 -lm 没有传递到链接器,所以链接器以为你没有写 -lm,于是链接出错。
有些版本的 gcc 链接参数要放最后面才会传到链接器,这是个坑