我正在学习本教程: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:\Dev\cygwin64\opt\cross\x-tools\arm-unknown-linux-gnueabi\arm-unknown-linux-gnueabi\sysroot\usr\include -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:\Dev\cygwin\opt\cross\x-tools\sysroot\usr\lib" -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/cygwin\opt/cross/x-tools/sysroot/usr/lib"-shared -o "libtest"./src/test .o
关于c++ - 交叉编译+cygwin+树莓派,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26580302/