【发布时间】:2025-11-25 18:40:01
【问题描述】:
我正在尝试为 Mips 处理器交叉编译 Azure IoT SDK C。使用旧版本的 CMake (2.8.12.2) 交叉编译同一 SDK 的旧版本工作得很好,所以我怀疑它是代码本身。我猜它是 Mips GCC 编译器。
错误信息:
CMake Error at /usr/share/cmake-3.10/Modules/CMakeTestCCompiler.cmake:52 (message):
The C compiler
"/usr/local/mipsisa32r2el/r23/bin/mipsisa32r2el-axis-linux-gnu-gcc"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: /home/axis/azure-iot-sdk-c/cmake/iotsdk_linux/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/make" "cmTC_2cc84/fast"
/usr/bin/make -f CMakeFiles/cmTC_2cc84.dir/build.make CMakeFiles/cmTC_2cc84.dir/build
make[1]: Entering directory '/home/axis/azure-iot-sdk-c/cmake/iotsdk_linux/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_2cc84.dir/testCCompiler.c.o
/usr/local/mipsisa32r2el/r23/bin/mipsisa32r2el-axis-linux-gnu-gcc --sysroot=/usr/local/mipsisa32r2el/r23 -o CMakeFiles/cmTC_2cc84.dir/testCCompiler.c.o -c /home/axis/azure-iot-sdk-c/cmake/iotsdk_linux/CMakeFiles/CMakeTmp/testCCompiler.c
Linking C executable cmTC_2cc84
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_2cc84.dir/link.txt --verbose=1
/usr/local/mipsisa32r2el/r23/bin/mipsisa32r2el-axis-linux-gnu-gcc --sysroot=/usr/local/mipsisa32r2el/r23 -rdynamic CMakeFiles/cmTC_2cc84.dir/testCCompiler.c.o -o cmTC_2cc84
/usr/local/mipsisa32r2el/r23/lib/gcc/mipsisa32r2el-axis-linux-gnu/4.7.2/../../../../mipsisa32r2el-axis-linux-gnu/bin/ld: this linker was not configured to use sysroots
collect2: error: ld returned 1 exit status
CMakeFiles/cmTC_2cc84.dir/build.make:97: recipe for target 'cmTC_2cc84' failed
make[1]: *** [cmTC_2cc84] Error 1
make[1]: Leaving directory '/home/axis/azure-iot-sdk-c/cmake/iotsdk_linux/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_2cc84/fast' failed
make: *** [cmTC_2cc84/fast] Error 2
不幸的是,我被我拥有的 Mips GCC 编译器困住了。有没有办法禁用这个测试程序检查?
解决方案是将这些添加到工具链文件中:
SET (CMAKE_C_COMPILER_WORKS 1)
SET (CMAKE_CXX_COMPILER_WORKS 1)
【问题讨论】:
-
"有没有办法禁用这个测试程序检查?" - 是的。轻松谷歌搜索:*.com/questions/10599038/…
-
@Tsyvarev 忽略它,因为接受的答案来自 2012 年,没有可用的答案,但在底部有一行似乎禁用它。
-
如果你的最后一段有意图回答你的问题,那么它不适合它:在 Stack Overflow 上,我们倾向于将 question 和 answer分开> 帖子。相反,您可以在 answer post 中回答:在 Stack Overflow 上 self-answering 是 perfectly acceptible。
-
@Tsyvarev 我知道,但我认为 48 期也适用于发布它,而不仅仅是接受它。也有人可能有更好的解决方案,或者只是一个解释。
标签: gcc cmake mips cross-compiling