问题描述:
Cmake 指定高版本的gcc可以编译通过项目,但是不带测试实例,如果要安装测试实例官网
给的编译参数是:
-Dgw_enable_benchmarks=ON
但是使用完以后并没有生成相应的测试程序只生成了readme,将make过程打印出来后可以看到readme的路径。
进行cmake定位发现是否生成benchmark的测试程序是有一个if判断:
再次定位这个变量:
只有当cga_enable_benchmarks为真的时候才会将enable_benchmarks设置为ON从而构建benchmark的测试程序。添加CMAKE参数,果然跟之前的过程不同,但是报错了。
再次进到CMAKE程序里定位:
可以看到当这三个变量都是假的时候,打印出这个报错,但是再往后就定位不到问题了。
采取方案二:
先不构建这个测试实例,而是先安装工程,最后手工安装测试实例。
修改一下cmake文件,尝试build成功。生成了测试程序,但是运行报错。如下
百度后,说是需要将/lib64/libstdc++.so.6链接到新版的动态链接库,先用下面命令查找相应的标准库。
find / -name "libstdc++.so*"
应该使用红色的,删除原有的软连接,将/lib64/libstdc++.so.6挂到红色的地址,再次运行测试程序成功!!!!!!!!
思考
之前报错下面三个变量都找不到,会不会也是在老版本的动态库中,没有定义这三个宏呢,试了下,将生成后的测试程序删除掉,再次安装成功!!!!,证明之前的问题都是因为使用了旧的动态链接库。