Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 链接共享库,调用没有自定义LD_LIBRARY_PATH的程序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我可以成功链接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.@H_674_5@
我可以成功链接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保存在与程序相同的目录中.

大佬总结

以上是大佬教程为你收集整理的linux – 链接共享库,调用没有自定义LD_LIBRARY_PATH的程序全部内容,希望文章能够帮你解决linux – 链接共享库,调用没有自定义LD_LIBRARY_PATH的程序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。