当我尝试在其他新机器上执行 Linux 可执行文件
时,我的程序因 OpenSSL
的依赖性而出现错误。
为了顺利运行我的程序,需要预加载 libssl.so
和 libcrypto.so
。
如何在 Linux
上使用 make 文件或任何其他解决方案删除此依赖性
最佳答案
您似乎将可执行文件与 OpenSSL 库动态链接。所以你的可执行文件需要 libcrypto.so 和 libssl.so。您有两种方法:
- OpenSSL 在 Linux 环境中分布相当广泛,并且很可能预安装在您运行可执行文件的 Linux 上。所以问题可能出在所需的库版本上 - 您的可执行文件可能是用例如OpenSSL 1.0.1,Linus 有 0.9.8。或者问题可能出在库的路径上。在 RadHat 中,OpenSSL 库默认位于/lib64 中。因此,您需要使用与您运行的 Linux 上相同或兼容的 OpenSSL 版本来构建应用程序,或者通过设置 LD_LIBRARY_PATH 来提供正确的路径
您可以将可执行文件静态链接到 OpenSSL 库:
gcc -lsome_dynamic_lib code.c libcrypto.a libssl.a
关于linux - 如何删除openssl库依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38474356/