Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
-
- 帖子: 4
- 注册时间: 2014-05-02 9:18
- 系统: Ubuntu 14.0
Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
前两天虚拟机刚装上Ubuntu 听说里面gcc是编译c/c++利器,闲来无事就写了几个简单程序,涉及到有数学运算函数,头文件也加了<math.h>编译时也没提找不到"math.h",但就是提示"sqrt()"函数未定义,看网上论坛说编译时j加上"-lm",也加了,但编译器还是一口咬定"sqrt()"函数未定义,但在fedora下加上"-lm"问题就解决了阿?为啥我的Ubuntu 14.04LTS不行,是俺没装好么?有图为证,我擦,真么上传图片阿,你们都是在linux下逛论坛还是Windows下,好不习惯!
- xcjzhd
- 帖子: 203
- 注册时间: 2009-06-12 20:20
- 系统: The Great ArchLinux
Re: Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
去你的 /usr/lib 下面看看有没有libm 没有的话, 记得安装glibc.
负责解决各种UEFI问题
- lainme
- 论坛版主
- 帖子: 7805
- 注册时间: 2008-09-13 19:17
- 系统: Arch Linux (x86_64)
- 联系:
Re: Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
有没有安装libc6-dev?或者直接装build-essentials
- cjxgm
- 帖子: 1952
- 注册时间: 2010-04-23 20:40
- 系统: Arch Linux
- 来自: 浙江·杭州
- 联系:
Re: Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
调整下参数顺序,试着把 -lm 放最后面
[bash]gcc -o a a.c -lm[/bash]
如果还不行,试试分步操作:
[bash]gcc -c -o a.o a.c # 编译
gcc -o a a.o -lm # 链接[/bash]
[bash]gcc -o a a.c -lm[/bash]
如果还不行,试试分步操作:
[bash]gcc -c -o a.o a.c # 编译
gcc -o a a.o -lm # 链接[/bash]
上次由 cjxgm 在 2014-05-02 14:18,总共编辑 1 次。
- cjxgm
- 帖子: 1952
- 注册时间: 2010-04-23 20:40
- 系统: Arch Linux
- 来自: 浙江·杭州
- 联系:
Re: Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
没有 -lm 的话,那错误应该是xcjzhd 写了:去你的 /usr/lib 下面看看有没有libm 没有的话, 记得安装glibc.
代码: 全选
/usr/bin/ld: cannot find -lm
collect2: error: ld returned 1 exit status
更何况,有 -lc 会没有 -lm?
-
- 帖子: 4
- 注册时间: 2014-05-02 9:18
- 系统: Ubuntu 14.0
Re: Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
4楼的办法解决了,虽然不知为什么, 感谢大家的帮忙,/usr/lib 下面确实没有libm文件但有以libm开头的6个文件夹还有很多文件,build-essentials是装了最新版的.
- cjxgm
- 帖子: 1952
- 注册时间: 2010-04-23 20:40
- 系统: Arch Linux
- 来自: 浙江·杭州
- 联系:
Re: Ubuntu 中gcc 编译简单c语言问题,我知道这个问题很肤浅,还望各位大侠帮忙
错误原因是参数 -lm 没有传递到链接器,所以链接器以为你没有写 -lm,于是链接出错。芳草萋萋 写了: 4楼的办法解决了,虽然不知为什么, 感谢大家的帮忙,/usr/lib 下面确实没有libm文件但有以libm开头的6个文件夹还有很多文件,build-essentials是装了最新版的.
有些版本的 gcc 链接参数要放最后面才会传到链接器,这是个坑