C++学习—— CMake找不到LD_LIBRARY_PATH的so文件

这个算是一个经常遇到的问题了,在编辑一些cmake的库的时候,
在代码编译的时候是正常的,但是在使用的时候却会报如下的问题:

error while loading shared libraries: xxx.so: cannot open shared object file: No such file or directory

项目中各个模块输出的 so 文件都是在各个模块的文件夹下,不是在同一个地方,用 LD_LIBRARY_PATH 去把所有的模块输出文件路径加进来不现实。
一个解决方法:

 find_package(XXX) 

通过 find_package(XXX) 来找,前提是 CMake 官方提供有 FindXXX 模块(
find_library默认不搜索LD_LIBRARY_PATH, 并且网上也找不到让cmake搜索LD_LIBRARY_PATH的文章。)

find_package(JNI)

get_filename_component(JVM_LIB_PATH ${JAVA_JVM_LIBRARY} DIRECTORY)
get_filename_component(JAVA_LIB_PATH ${JVM_LIB_PATH} DIRECTORY)
link_directories(${JVM_LIB_PATH} ${JAVA_LIB_PATH})

set_target_properties(${NAME} PROPERTIES LINK_FLAGS "-ljvm")

否则要用到下面的方法
参考资料:
How can LD_LIBRARY_PATH be changed within CMake
Does CMake’s find_library search LD_LIBRARY_PATH
用 CMake 的一点经验
CMake库搜索函数居然不搜索LD_LIBRARY_PATH? 由编译工具使用体验而引发的思考

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量化橙同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值