交叉编译+cygwin+树莓派

cross compiling + cygwin + raspberry pi

本文关键字:+cygwin+ 交叉编译      更新时间:2023-10-16

我正在学习本教程:http://www.a2p.it/wordpress/tech-stuff/development/remote-debugging-raspberrypi/

试图交叉编译一些c++代码,但出现以下错误:

19:36:00 **** Incremental Build of configuration Debug for project test ****
make all 
Building file: ../src/test.cpp
Invoking: Cygwin C++ Compiler
arm-unknown-linux-gnueabi-g++ -IC:Devcygwin64optcrossx-toolsarm-unknown-linux-gnueabiarm-unknown-linux-gnueabisysrootusrinclude -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/test.d" -MT"src/test.d" -o "src/test.o" "../src/test.cpp"
src/subdir.mk:18: recipe for target 'src/test.o' failed
make: *** [src/test.o] Error 127
19:36:01 Build Finished (took 120ms)

我使用的是64位cygwin、64位Eclipse和gnueabi hardfp,可以在这里找到:https://github.com/IanLinsdell/Raspberrypi

有人知道这个错误是什么意思吗?

更新:使用32位cygwin,我能够克服上述错误,但现在我得到了这些链接器错误:

Building target: libtest
Invoking: Cross G++ Linker
arm-unknown-linux-gnueabi-g++ -L"C:Devcygwinoptcrossx-toolssysrootusrlib" -shared -o "libtest"  ./src/test.o   
/opt/cross/x-tools/bin/../lib/gcc/arm-unknown-linux-gnueabi/4.6.3/../../../../arm-unknown-linux-gnueabi/bin/ld: cannot find crti.o: No such file or directory
/opt/cross/x-tools/bin/../lib/gcc/arm-unknown-linux-gnueabi/4.6.3/../../../../arm-unknown-linux-gnueabi/bin/ld: cannot find -lstdc++
/opt/cross/x-tools/bin/../lib/gcc/arm-unknown-linux-gnueabi/4.6.3/../../../../arm-unknown-linux-gnueabi/bin/ld: cannot find -lgcc_s
/opt/cross/x-tools/bin/../lib/gcc/arm-unknown-linux-gnueabi/4.6.3/../../../../arm-unknown-linux-gnueabi/bin/ld: cannot find /lib/libc.so.6
/opt/cross/x-tools/bin/../lib/gcc/arm-unknown-linux-gnueabi/4.6.3/../../../../arm-unknown-linux-gnueabi/bin/ld: cannot find /usr/lib/libc_nonshared.a
/opt/cross/x-tools/bin/../lib/gcc/arm-unknown-linux-gnueabi/4.6.3/../../../../arm-unknown-linux-gnueabi/bin/ld: cannot find /lib/ld-linux.so.3
collect2: ld returned 1 exit status
makefile:45: recipe for target 'libtest' failed
make: *** [libtest] Error 1

我在目录C:\Dev\cygwin/opt\cross\x-tools\sysroot\usr\lib中看到了上面的所有文件。我已经在G++Linker Lib路径设置中添加了该路径,甚至还将其添加到了Cross Compiler path中。什么东西?

Cygwin通常将本地驱动器映射为/cygdrive/c/,而不是c:\,因此这可能有助于指定库搜索路径的-L指令

Unix系统也使用正斜杠/,因此您的编译行应该如下所示:arm-unknown-linux-gnueabi-g++ -L"/cygdrive/c/Dev/cygwinopt/cross/x-tools/sysroot/usr/lib" -shared -o "libtest" ./src/test.o