gcc新版本引起的编译错误(命令执行时的外部库输入位置)

昨天,遇到一个比较bug的错误,用gcc来编译几个简单的文件出错,编译环境为x86_64的Ubuntu12.04,gcc版本号如下:

gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

编译如下命令,主要是需要添加一个常用数学库libm.so。编译的语法如下出现了如下的错误:

gcc -lm main.c bp_alg_api.c -o test

还是会出现没有链接时指定的库文件lm。

如果这样就可以成功:

gcc main.c bp_alg_api.c -lm  -o test

也许上面的命令执行更加清晰,先把源文件编译,然后再去处理链接,链接的库需要在源文件的后面。体现规范和编译的流程性。

 

至于在低版本比如gcc4.5。或者说常用的arm交叉编译器时,上述两种方式的处理过程都是正常的。

 

gcc编译出的目标文件,再使用arm交叉编译gcc来链接出可执行文件,会出现Relocation in generic ELF(M:3)的错误。需要明确编译和链接采用的编译器属性要一致,gcc还是交叉编译gcc。两者不能混淆。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值