使用非默认GCC构建cmake使用系统libstdc ++

时间:2017-05-23 10:40:44

标签: gcc cmake libstdc++

我正在尝试使用Solaris 2.11上的/ usr / local / gcc530中安装的非默认GCC编译CMake。

我有LD_LIBRARY_PATH=/usr/local/gcc530/lib/sparcv9

Bootstrap很好,bootstrap的cmake成功编译了各种目标文件,但是当它试图链接真正的cmake(和其他可执行文件)时,我得到了各种标准库函数的“未定义引用”错误页面,因为,当使用-Wl,-verbose显示手动运行链接命令时,链接器链接到系统默认的/usr/lib/64/libstdc++.so,更老的GCC。

这是因为显然CMake试图找到curses / ncurses库(即使我告诉它BUILD_CursesDialog:BOOL=OFF),在/ usr / lib / 64中找到它们,并将-L/usr/lib/64添加到build / Source / CMakeFiles / cmake.dir / link.txt,它使链接器使用libstdc ++。所以从那里开始,而不是我的实际GCC自己的。

我找到了一个解决方法:我可以从$CC -m64 -print-file-name=libstdc++.so获取正确库的路径,然后在运行./configure时将其与-L放入LDFLAGS,然后一切正常。

是否有一种不那么黑客的方式?我无法告诉GCC优先考虑自己的库,这真的很奇怪。

另外,有没有办法让CMake解释结果命令行的不同部分来自何处?

0 个答案:

没有答案