gcc新版本引起的编译错误(命令执行时的外部库输入位置)
2014-06-05 11:53
288 查看
昨天,遇到一个比较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 main.c bp_alg_api.c -lm -o test也许上面的命令执行更加清晰,先把源文件编译,然后再去处理链接,链接的库需要在源文件的后面。体现规范和编译的流程性。
至于在低版本比如gcc4.5。或者说常用的arm交叉编译器时,上述两种方式的处理过程都是正常的。
gcc编译出的目标文件,再使用arm交叉编译gcc来链接出可执行文件,会出现Relocation in generic ELF(M:3)的错误。需要明确编译和链接采用的编译器属性要一致,gcc还是交叉编译gcc。两者不能混淆。
相关文章推荐
- gcc新版本号引起的编译错误(命令运行时的外部库输入位置)
- ubuntu 11.10 编译android aosp 由于gcc版本过高引起的错误,安装 gcc 4.4
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- 编译fdk-aac,执行批处理的时候出现这个错误,mingw32-gcc.exe: error: CreateProcess: No such file or directory的问题
- Qt creator 编译错误:无法解析的外部符号(命令)
- 1. webservice在输入命令的时候wsimport的时候会出现如下错误: wsimport不是内部或者外部命令。 2. javac不是内部或者外部命令 3 java 就可以显示配置成功。
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- “adb不是内部或外部命令,也不是可执行的应用程序”错误原因及解决方法
- 安装交叉编译工具,执行arm-linux-gcc–v命令出现提示找不到该文件或目录?解决方法
- 成员变量的声明位置引起编译错误
- 在cmd输入命令符出现“不是内部或外部命令,也不是可运行的程序或批处理文件”的错误
- dos窗口输入命令后 提示不是内部或外部命令也不是可执行的程序或批处理文件
- vs2012编译错误----'yasm' 不是内部或外部命令
- 编译busybox1.16的时候,执行make命令,报错,错误信息:437 “mixed implicit and normal rules”,翻译为中文:混合的和隐含普通规则
- 编译QT5.0.1的错误“qtbase\\configure.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件”的解决方法
- 在执行yiic webapp命令时,就报以下错误了: ‘"php.exe"’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- gcc编译出现:致命错误,没有输入文件
- Qt creator 编译错误:无法解析的外部符号(命令)