树莓派的交叉编译——包括来自同步文件系统的库

标签 c cmake raspberry-pi cross-compiling

我正在尝试在我的 PC 上交叉编译简单的项目以在 RaspberryPi 上工作。我在网上找到了一些教程并制作了cmake文件。基本的cmake文件在rpi端工作,但交叉编译附加文件有一些问题。 Makefile 已正确生成,但调用 make抛出它找不到的东西 wiringPi.h图书馆,我正在使用的 ofc 。我已将/lib 和/usr 从 rpi 同步到我的电脑。

这是我用于交叉编译的cmake。

#info
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1)
# specify the cross compilers
SET(CMAKE_C_COMPILER
/home/voodoo16/raspberryPi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER
/home/voodoo16/raspberryPi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++)
# where is the target environment
SET(CMAKE_FIND_ROOT_PATH /home/voodoo16/raspberryPi/fs)
# search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

当然,我通过以下方式调用 cmake 创建:

cmake -DCMAKE_TOOLCHAIN_FILE=crossCompile.cmake .

文件存在于 fs 文件夹中。这是查找的输出:

voodoo16@tesla:[~/raspberryPi/fs]$ find -name *wiringPi*
./usr/local/include/wiringPiSPI.h
./usr/local/include/wiringPi.h
./usr/local/include/wiringPiI2C.h
./usr/local/lib/libwiringPi.so
./usr/local/lib/libwiringPi.so.2.32
./usr/local/lib/libwiringPiDev.so
./usr/local/lib/libwiringPiDev.so.2.32
./usr/lib/libwiringPi.so
./usr/lib/libwiringPiDev.so

我想我缺少一些 cmake 命令,该命令允许使用标准 #include <lib.h> 从 rpi 文件系统查看库,而不是通过 PC 系统查看库。 .

最诚挚的问候, 巫毒16。

最佳答案

您需要设置CMake变量CMAKE_SYSROOT有关交叉编译的提示编译器:

set(CMAKE_SYSROOT "/home/voodoo16/raspberryPi/fs")
<小时/>

CMake 变量 CMAKE_FIND_*仅影响 CMake find_*命令,它们不直接提示编译器。从另一边看,CMAKE_SYSROOT find_* 的变量提示命令也是如此。

关于树莓派的交叉编译——包括来自同步文件系统的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39924807/

相关文章:

linux - HID 智能卡读卡器 Linux Raspberry Pi

c - 将 FILE* 结构映射到缓冲区?

从单独的函数创建和列出数组

c++ - 我可以从多个目标创建一个库吗?

CMake 查找从源代码编译的 protobuf

python - 如何将pygame Surface作为图像保存到内存(而不是磁盘)

c - 如何实现分级调试系统?

c - 声明内联函数后,什么会再次导致多重定义错误?

使用 CMake 将具有给定扩展名的所有文件复制到输出目录

python Mysql SELECT数据未刷新