64位CentOS7.2下make install将库安装到/usr/lib而非/usr/lib64的问题
解决CentOS 7.2 64位系统中CMake安装库到/usr/lib而非/usr/lib64的问题
这个问题在RHEL/CentOS这类64位发行版里挺常见的——它们默认用/usr/lib64存放64位库,但CMake有时候不会自动识别这个发行版特有的路径规则。下面给你几个实用的解决办法:
方法1:手动指定LIB_INSTALL_DIR参数
直接在cmake命令里添加-DLIB_INSTALL_DIR=/usr/lib64,强制指定库的安装路径。修改后的完整命令如下:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DLIB_INSTALL_DIR=/usr/lib64 -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. && sudo make install
方法2:设置CMake标准变量CMAKE_INSTALL_LIBDIR
CMake有个专门控制库安装目录的标准变量CMAKE_INSTALL_LIBDIR,在RHEL系系统里,把它设为lib64就能自动对应到/usr/lib64路径。命令修改为:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. && sudo make install
方法3:通过环境变量预先配置
如果不想每次执行cmake都加参数,可以先设置环境变量让CMake默认适配CentOS的路径规则:
export CMAKE_INSTALL_LIBDIR=lib64 # 接着执行你的原cmake命令即可 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. && sudo make install
问题根源说明
不同Linux发行版的库路径规范有差异:Debian/Ubuntu系64位系统用/usr/lib/x86_64-linux-gnu,而RHEL/CentOS系用/usr/lib64。如果这个库的CMakeLists.txt没有做跨发行版的路径适配,就会默认把库安装到${CMAKE_INSTALL_PREFIX}/lib,也就是/usr/lib目录。
内容的提问来源于stack exchange,提问作者Zubair-Safenet
相关产品推荐
相关产品推荐

