我正在尝试使用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解释结果命令行的不同部分来自何处?