![helloworld程序的交叉编译错误](https://linux22.com/image/846511/helloworld%E7%A8%8B%E5%BA%8F%E7%9A%84%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91%E9%94%99%E8%AF%AF.png)
我已经使用本教程创建了 amhello-1.0.tar.gz 点击打开
现在我正在尝试进行交叉编译,但出现错误。我正在关注本教程 点击打开
输入命令后make
出现错误
hp@ubuntu:~/amhello-1.0$ make
make all-recursive
make[1]: Entering directory `/home/hp/amhello-1.0'
Making all in src
make[2]: Entering directory `/home/hp/amhello-1.0/src'
i586-mingw32msvc-gcc -g -O2 -o hello.exe main.o
main.o: file not recognized: File format not recognized
collect2: ld returned 1 exit status
make[2]: *** [hello.exe] Error 1
make[2]: Leaving directory `/home/hp/amhello-1.0/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/hp/amhello-1.0'
make: *** [all] Error 2
答案1
看起来您正在为交叉编译重新使用与原始本机构建相同的构建目录。'make' 程序不知道您已经更改了工具链,并且不认为目标文件 (main.o) 已过期 - 因此它不会尝试重新编译它,而是直接跳到链接步骤 - 这会失败,因为它试图将本机 ELF 对象与外部 (mingw) 库链接起来。
尝试在之前执行make clean
或以强制完全重新编译。rm src/*.o
make