【问题标题】:raspberry pi cross compiler (linaro) cannot find includes树莓派交叉编译器(linaro)找不到包含
【发布时间】:2017-03-26 10:39:33
【问题描述】:

我正在按照这个问题 (Installing Raspberry Pi Cross-Compiler) 中的答案设置一个工具链,以便从 linux (Mint 18.1) 编译到树莓派 3。

我设置了所有内容,但是当我制作项目时,它找不到我看到的标题确实复制到了我的本地机器中。

例如,

我的项目的 cmake 交叉编译工具链文件如下所示:

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1)
SET(CMAKE_C_COMPILER $ENV{HOME}/workspace/pi/xtools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER $ENV{HOME}/workspace/pi/xtools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++)
SET(CMAKE_FIND_ROOT_PATH $ENV{HOME}/workspace/pi/pilibs/)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
  • $HOME/workspace/pi/xtools 是 git://github.com/raspberrypi/tools.git 存储库。
  • $HOME/workspace/pi/pilibs 包含我的 pi 的 /lib/usr 目录。而且我可以确认如果我直接在 pi 上“制作”程序,它编译得很好。

但是当我在我的 Linux 机器上“制作”时,在使用 cmake 生成 makefile(使用 cmake-qt-gui;选择上面的工具链文件)后,它找不到标题:

fede@fede-mbp ~/workspace/mt/mt-build-pi $ make
Scanning dependencies of target cguittfont
[  0%] Building CXX object src/cguittfont/CMakeFiles/cguittfont.dir/xCGUITTFont.cpp.o
In file included from /home/fede/workspace/pi/xtools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/cstdlib:72:0,
                from /home/fede/workspace/pi/xtools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/bits/stl_algo.h:59,
                from /home/fede/workspace/pi/xtools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/algorithm:62,
                from /home/fede/workspace/mt/minetest/src/cguittfont/xCGUITTFont.h:4,
                from /home/fede/workspace/mt/minetest/src/cguittfont/xCGUITTFont.cpp:4:
/home/fede/workspace/pi/pilibs/usr/include/stdlib.h:760:34: fatal error: bits/stdlib-bsearch.h: No such file or directory
# include <bits/stdlib-bsearch.h>
                                ^
compilation terminated.

虽然我有/home/fede/workspace/pi/pilibs/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h

【问题讨论】:

  • 看起来/home/fede/workspace/pi/pilibs/usr/include/arm-linux-gnueabihf/ 不在您的包含路径中。据我了解,具有编译器特定后缀的路径仅在编译器(工具链)本身附带时才包含在包含路径中。但是您的工具链位于完全不同的目录下,那么为什么要使用该路径?至于路径/home/fede/workspace/pi/pilibs/usr/include/,我猜它被搜索只是因为一些find_path() 调用找到了它。此命令使用 CMAKE_FIND_ROOT_PATH 变量,但编译器本身不知道它。

标签: gcc cmake raspberry-pi


【解决方案1】:

显然,我还必须将 CMAKE_SYSROOT 设置为与 CMAKE_FIND_ROOT_PATH 相同的路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2013-12-12
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多