CMake中遇到“is not able to compile a simple test program“问题分析

只要通过CMake编译C或C++代码,不管是在Windows、Linux、Mac上还是进行交叉编译,配置不当时,就有可能出现” is not able to compile a simple test program”问题。

CMake在编译你的C或C++代码前,会先验证你指定的编译器是否可以正常工作。CMake会先自动生成一个非常简单的testCCompiler.c或testCXXCompiler.cxx文件,它会尝试使用CMake认为的”standard”编译器选项来编译此文件,若是非交叉编译,可能还会尝试执行该可执行文件,以查看编译器是否正常工作。

” is not able to compile a simple test program”问题的可能原因:

(1).Linux上有多个gcc/g++版本,编译时未按你预期的gcc/g++版本进行编译;

(2).Linux版本低;

(3).系统找不到指定的文件,如动态库。

下图是我在Ubuntu 16.04上执行交叉编译时遇到的类似问题:

CMake中遇到“is not able to compile a simple test program“问题分析_第1张图片

通过ldd命令查看可执行文件或动态库依赖哪些动态库,这里查看aarch64-linux-gnu/bin/ld可执行文件依赖哪些动态库,如下图所示:它依赖/lib/x86_64-linux-gnu/libc.so.6动态库,但是没有找到”GLIBC_2.27”,即没有找到glibc 2.27版本。

通过strings命令查看/lib/x86_64-linux-gnu/libc.so.6支持哪些版本,如下图所示:在Ubuntu 16.04上glibc只支持到2.23版本,不支持2.27版本。

CMake中遇到“is not able to compile a simple test program“问题分析_第2张图片

解决方法一个是在Ubuntu 16.04上升级glibc到2.27,比较麻烦;另一个简单的方法是使用Ubuntu 18.04重新编译此工程,经测试,将工程拷贝到Ubuntu 18.04上直接编译一切顺利。

你可能感兴趣的:(CMake/Makefile,CMake)