加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 链接共享库,调用没有自定义LD_LIBRARY_PATH的程序

发布时间:2020-12-14 01:11:20 所属栏目:Linux 来源:网络整理
导读:我可以成功链接libawesomium-1.6.5.so: -L-L.-L-lawesomium-1.6.5-L-ldl libawesomium-1.6.5.so与我的可执行文件位于同一目录中,现在如果我尝试调用我的程序(我现在称之为prog),它存在于: ./prog: error while loading shared libraries: libawesomium-1.6
我可以成功链接libawesomium-1.6.5.so:

-L-L.
-L-lawesomium-1.6.5
-L-ldl

libawesomium-1.6.5.so与我的可执行文件位于同一目录中,现在如果我尝试调用我的程序(我现在称之为prog),它存在于:

./prog: error while loading shared libraries: libawesomium-1.6.5.so.0: cannot open shared object file: No such file or directory

所以我创建了一个指向libawesomium-1.6.5.so的符号链接libawesomium-1.6.5.so.0,再次运行prog给我同样的错误,用自定义LD_LIBRARY_PATH =./ works调用它,但我想分发编程和我希望用户能够使用带有root权限的prog(将awesomium安装到/usr/lib等),而无需设置LD_LIBRARY_PATH.一个选项是设置LD_LIBRARY_PATH的shell脚本,但我更喜欢不同的方式(我也听说设置LD_LIBRARY_PATH是一个坏主意).

此外,如果不需要为libawesomium-1.6.5.so.0创建符号链接,那将会很棒.

编辑:

传递-rpath =.到链接器工作!但不幸的是,awesomium不能处理它:

/.../awesomium_test/AwesomiumProcess: error while loading shared libraries: libawesomium-1.6.5.so.0: cannot open shared object file: No such file or directory

使用-rpath并从内部设置LD_LIBRARY_PATH工作

解决方法

如果使用gcc,则可以传递-Wl,-rpath = lib_directory,以使可执行文件搜索目录lib_directory中的库.

此外,此参数接受一个特殊值$ORIGIN,表示包含已执行程序的目录.因此,如果将-Wl,-rpath =’$ORIGIN’传递给gcc,您将能够将libawesomium-1.6.5.so保存在与程序相同的目录中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读