我正在尝试将一个简单的helloworld.c程序交叉编译为在ARM(Cortex-A5)上运行。
但我遇到了以下错误:
gcc: error trying to exec 'cc1' execvp: No such file or directory
硬件/软件: SAMA5D31处理器,Android Linux操作系统
主机: Ubuntu 12.04
Makefile
CC=/home/userid/android4sam_v4.0/cross_compile_mentor/arm-2013.05/bin/arm-none-linux-gnueabi-gcc
CFLAG=I.
helloworld:helloworld.o
$(CC)-o helloworld helloworld.o -I.
我已经在主机上编译了程序,并且运行良好。然后我导出了交叉编译器路径并尝试进行编译。
交叉编译器路径为:
/home/userid/android4sam_v4.0/cross_compiler_mentor/arm-2013.05/arm-none-linux-gnueabi/bin
我看到一些关于GCC_EXEC_PREFIX(环境变量)的帖子。当我输入echo $GCC_EXEC_PREFIX时,没有任何返回结果。如果这是问题的原因,请问有什么解决方法。
另外,我了解到定义-mcpu=cortex-A5是否必要?
此外,我使用locate cc1命令发现了以下结果。
/usr/lib/gcc/arm-linux-gnueabi/4.4.7/cc1
/usr/lib/gcc/arm-linux-gnueabi/4.6/cc1
我也看了关于“影响GCC的环境变量”的文档。
我还读到了关于“xgcc -B”的一些内容,不确定是否与解决问题有关。
从gcc -print-search-dirs命令输出的结果来看:
install: /usr/lib/gcc/x86_64-linux-gnu/4.6/
programs: =/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux- gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/bin/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/bin/
libraries: =/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/lib/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/lib/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/:/lib/x86_64-linux-gnu/4.6/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/4.6/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/lib/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../:/lib/:/usr/lib/
同时,以下命令编译没有任何问题
arm-linux-gnueabi-gcc -o serial -static serial.c
更新于2013年12月1日 根据Chris Stratton的建议,通过修改CC变量解决了以下问题。
gcc: error trying to exec 'cc1' execvp: No such file or directory
arm-linux-gnueabi-gcc
而不是gcc
作为交叉编译器。但如果这是一个 Android 工具链,则可能需要考虑其他因素。 - Chris Strattonarm-none-linux-gnueabi-gcc
而非arm-linux-gnueabi-gcc
导致的吗? - mangusta