aug*_*tin 1 c++ linux bash kde4 include-path
我在Kubuntu上正确安装了一个软件.
现在,我正在修补和测试它的一些库.
如何从bash启动软件,以便加载我的修补库而不是官方库?
例如:
官方的lib定位/ usr/lib中/
我的补丁库(测试开发过程中使用)是在/ home /用户的/ dev/lib目录/
我试过了:
$ set LD_LIBRARY_PATH=/home/user/dev/lib/
$ binary_app &
Run Code Online (Sandbox Code Playgroud)
但无济于事.
我倒认为可以从庆典中设置一个解决方案,但如果它是不可能的,我还可以修改这个C++软件的cmake的文件.
目的是允许我使用vanilla libs轻松启动应用程序,或者使用我的修补库来查看差异.
编辑:这是一个KDE .so文件
我正在测试的库是一个KDE4库.官方lib位于/ usr/lib/kde4 /中.在该目录中,没有任何库以lib前缀开头.
我是否这样做:
/lib/ld-linux-x86-64.so.2 --list --library-path PATH EXEC
Run Code Online (Sandbox Code Playgroud)
要么
ldd EXEC
Run Code Online (Sandbox Code Playgroud)
图书馆根本没有列出.
另一方面,如果将原始库从/ usr/lib/kde4 /移开,则应用程序启动但缺少相应的功能.
KDE4库是否以特定方式加载?也许要设置的变量是不同的......
编辑2
所有的答案都很好而且很有用......不幸的是,事实证明这个问题似乎与lib路径设置无关.我正在处理插件架构,并且.so加载路径似乎在应用程序的某处硬编码.我需要在源代码中花费更多时间来了解正在发生的事情......谢谢,并且+1给所有人.
来自'man bash':
当要执行除builtin或shell函数之外的简单命令时,将在由以下内容组成的单独执行环境中调用它.除非另有说明,否则值将从shell继承.
[....]
·标记为导出的shell变量和函数,以及为该命令导出的变量,在环境中传递
如果要执行的程序可以看到变量,则需要"导出"变量.
但是,您也可以尝试以下操作:
/lib/ld-linux.so.2 --library-path PATH EXECUTABLE
见http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
尝试export LD_LIBRARY_PATH=...而不是设置.