dav*_*v1d 5 linux shared-libraries awesomium
我可以成功链接libawesomium-1.6.5.so:
-L-L.
-L-lawesomium-1.6.5
-L-ldl
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
所以我创建一个libawesomium-1.6.5.so.0指向的符号链接libawesomium-1.6.5.so,prog再次运行给我同样的错误,用自定义LD_LIBRARY_PATH=./工程调用它,但我想分发prog,我希望用户能够使用progroot权限(安装awesomium /usr/lib等)和无需设置LD_LIBRARY_PATH.一个选项是一个shell脚本设置LD_LIBRARY_PATH,但我更喜欢不同的方式(我也听到设置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
Run Code Online (Sandbox Code Playgroud)
使用-rpath并从内部设置LD_LIBRARY_PATH工作
如果使用gcc,则可以传递-Wl,-rpath=lib_directory以使可执行文件搜索目录中的库lib_directory.
此外,此参数接受一个特殊值$ORIGIN,该值表示包含已执行程序的目录.因此,如果您传递-Wl,-rpath='$ORIGIN'给gcc,您将能够与程序保持libawesomium-1.6.5.so在同一目录中.
| 归档时间: |
|
| 查看次数: |
5875 次 |
| 最近记录: |