【发布时间】:2014-05-27 15:36:27
【问题描述】:
我有a similar query 并关闭它,因为我认为它有效。其实我还是有问题。所以我在一个新线程中发布。我的 CMake 始终为 Visual Studio 2010 构建。我正在为 Raspberry PI 进行交叉编译,我的工具链文件如下。
SET(CMAKE_SYSTEM_NAME Linux) # this one is important
SET(CMAKE_SYSTEM_VERSION 1) # this one not so much
SET(CMAKE_C_COMPILER C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++)
SET(CMAKE_AR C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-ar)
SET(CMAKE_LINKER C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-ld)
SET(CMAKE_NM C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-nm)
SET(CMAKE_OBJCOPY C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-objcopy)
SET(CMAKE_OBJDUMP C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-objdump)
SET(CMAKE_STRIP C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-strip)
SET(CMAKE_RANLIB C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-tanlib)
# where is the target environment
SET(CMAKE_FIND_ROOT_PATH C:/ThitSan_Backup/RasberryPI/rpi/helloWorld)
# 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 时,它会为 Visual Studio 2010 构建,如附图所示。
cmake -D CMAKE_TOOLCHAIN_FILE=../toolchain-rpi.cmake ../ 和 cmake CMAKE_TOOLCHAIN_FILE=../toolchain-rpi.cmake ../ 都给了我相同的结果。
我的问题是
(1) 为什么 cmake 在默认情况下会尝试为 Visual Studio 2010 构建?
(2) 使用 arm 编译器为 Raspberry PI 进行交叉编译以避免此类问题需要注意哪些事项?
谢谢
【问题讨论】:
-
尝试删除
-D之后的空格(有关详细信息,请参阅this answer)。 -
我想,还是一样。今晚让我试试。
-
很抱歉最初的问题stackoverflow.com/questions/23856544/… 不令人满意。您本可以不接受我的回答,然后编辑您的问题以使其更准确。那本来就很好。
-
@lrineau 非常感谢。我编辑了我的查询,以便更具体地了解我想知道的内容。
-
@lrineau 我在 Windows 7 操作系统中,我将环境路径设置为 C:\arm-bcm2708\gcc-linaro-arm-linux-gnueabihf-raspbian\bin。但是当我在命令窗口以 arm-linux-gnueabihf-gcc -v 测试它时。它被抱怨为“arm-linux-gnueabihf-gcc”无法识别。我认为这是问题所在。
标签: cmake raspberry-pi cross-compiling