我一直在尝试在 RHEL 6.4 机器上构建 3.3 的RPM软件包。libc++我需要静态库和共享库。所以,我学习了一些基础知识,cmake然后修改了捆绑的CMakeList.txt. 让那部分工作。
但是由于在 RHEL 6.x 中,所有 64 位库都应该转到/usr/lib64而不是/usr/lib,所以我一直在尝试使用以下方法来完成工作:
(A) 在构建过程中,我使用
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX})
让所有库文件 (*.so*和*.a) 位于lib64而不是lib.
(B) 使用ADD_LIBRARY...如下所示的命令
ADD_LIBRARY(c++ STATIC ...
和...一起
set_target_properties(c++ PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX})
INSTALL(TARGETS c++
ARCHIVE DESTINATION lib${LIB_SUFFIX})
获取安装在/usr/lib64.
(C) 此外,与
INSTALL(FILES ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX}/libc++.so DESTINATION lib${LIB_SUFFIX})
INSTALL(FILES ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX}/libc++.so.1 DESTINATION lib${LIB_SUFFIX})
INSTALL(FILES ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX}/libc++.so.1.0 DESTINATION lib${LIB_SUFFIX})
也安装了共享库/usr/lib64。
但是共享库的副本仍然安装在/usr/lib生成的 RPM 中。我该如何预防?
如果我要编写一个 RPMspec文件,_libdir宏会自动处理它。考虑cmake到我仍然是新手,我会很感激关于正确使用指令的提示/指针。