在做交叉编译的时候,使用cmake出现了如题所示错误。StackOverflow上有一个答案写得很清楚:https://stackoverflow.com/questions/53633705/cmake-the-c-compiler-is-not-able-to-compile-a-simple-test-program/53635241
简而言之,cmake会用设定的编译参数去编译一个“标准”(它认为的)的小程序,执行后得到结果,以此来判定编译器相关设定是否正常生效。由于我们采用的是交叉编译器,目标文件的运行环境是在其他平台,而不是我们的编译平台,因此,它必然是无法执行的。
有两种方法可以解决此问题:
一、强行将检查设定为通过(“1”)
set(CMAKE_C_COMPILER_WORKS 1)
set(CMAKE_CXX_COMPILER_WORKS 1)
这样即可避免cmake进行编译器检查。
二、在project()
之前添加如下语句尝试编译成静态库,从而避免在交叉编译时进行链接。
set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")
转载请注明:OpenMind » Cmake: The C compiler “xxx”is not able to compile a simple test program