c++ - 交叉编译+cygwin+树莓派

标签 c++ cygwin raspberry-pi cross-compiling

我正在学习本教程: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/

相关文章:

c++ - 使用 QT6 在 QVideoWidget 上绘制 QVideoFrame

c++ - OpenGL 的纹理映射问题

c++ - 设置 uchar 的位

python-2.7 - python-magic Windows错误: access violation writing 0x00000000

gcc - 如何为 Raspberry Pi 1 创建现代交叉编译工具链?

C++ 从文件中读取

c++ - 程序不会在 NetBeans 中运行,而是在命令行中运行!

c - 在cygwin环境下使用opencv运行C程序

linux - 用于 Linux (Raspberry Pi) 的电话簿访问 (PBAP) 客户端

linux - 通过 SSH 提示输入密码发出命令