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

Posted llguanli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。两者不能混淆。


以上是关于gcc新版本号引起的编译错误(命令运行时的外部库输入位置)的主要内容,如果未能解决你的问题,请参考以下文章

使用 ARM GCC 编译列表迭代器时的模板编译时错误

用mingw32 gcc 一编译就出一大堆错误,应该怎么解决

编译时 不是内部或外部命令,也不是可运行的程序

CMD中无法使用GCC编译C程序

Linux下gcc编译器和gdb调试

ubuntu源码安装gcc8.2.0