我有一个像这样链接的可执行文件:
$ ldd a.out
libboost_system-mt.so.1.47.0 => /usr/lib64/libboost_system-mt.so.1.47.0 (0x00007f4881f56000)
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f4881cfb000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f4881965000)
librt.so.1 => /lib64/librt.so.1 (0x00007f488175d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4881540000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f4881239000)
.
.
Run Code Online (Sandbox Code Playgroud)
其中 libcrypto 和 libssl 库是 openssl 1.0.0-fips 库。我想尝试使用 1.0.1 库,因此我将它们构建在我的主目录中。有没有办法在a.out没有很多痛苦的情况下重新链接我的新 openssl 库?我想避免
a.out(因为构建工具非常复杂)有可能在这里做我希望的事情吗?
Gil*_*il' 23
编写一个设置LD_LIBRARY_PATH环境变量的包装脚本。这是PATH共享库的挂件。系统搜索路径总是在 中列出的目录之后搜索$LD_LIBRARY_PATH。请参阅动态链接器手册以供参考。
#!/bin/sh
export LD_LIBRARY_PATH=~/opt/openssl-1.0.1/lib
exec /path/to/a.out "$@"
Run Code Online (Sandbox Code Playgroud)
或者,一次性,直接在命令行上:
LD_LIBRARY_PATH=~/opt/openssl-1.0.1/lib ./a.out
Run Code Online (Sandbox Code Playgroud)
或者,如果您想修改二进制文件,请尝试chrpath,它允许您编辑在可执行文件中烘焙的库搜索路径。
| 归档时间: |
|
| 查看次数: |
71956 次 |
| 最近记录: |