【问题标题】:how to remove openssl library dependencies如何删除openssl库依赖
【发布时间】:2016-11-23 06:47:03
【问题描述】:

当我尝试在其他新机器上执行Linux executable 时,我的程序给出了OpenSSL 依赖的错误。

为了顺利运行我的程序,它需要预加载 libssl.solibcrypto.so

如何使用 make 文件或 Linux 上的任何其他解决方案删除此依赖项

【问题讨论】:

  • 由您决定什么能满足您的需求。您可以使用NSSGnuTLS 或其他适合您需要的安全库。
  • 我只想将这些依赖项附加到 make 文件中。

标签: linux openssl dependencies


【解决方案1】:

您似乎将可执行文件与 OpenSSL 库动态链接在一起。所以你的可执行文件需要 libcrypto.so 和 libssl.so。你有两种方法:

  1. OpenSSL 在 Linux 环境中分布广泛,很可能已预安装在运行可执行文件的 Linux 上。所以问题可能出在所需版本的库中 - 您的可执行文件可能会被编译,例如OpenSSL 1.0.1 和 Linus 有 0.9.8。或者问题可能出在库的路径上。在 RadHat 中,OpenSSL 库默认位于 /lib64 中。因此,您需要使用与您运行的 Linux 上相同或兼容版本的 OpenSSL 构建您的应用程序,或者通过设置 LD_LIBRARY_PATH 来提供正确的路径
  2. 您可以将可执行静态文件与 OpenSSL 库链接:

    gcc -lsome_dynamic_lib code.c libcrypto.a libssl.a

【讨论】:

  • 所以我可以简单地在我的 make 文件中使用这一行吗?如果我没记错的话,你说在执行第二个选项后我不需要这两个文件来在其他机器上运行我的目标文件跨度>
  • 是的,如果您选择第二个选项并与 OpenSSL 库建立静态链接,您将不会依赖于 OpenSSL .so 文件。
  • 当我在 makefile 中附加这些 lib 文件时。当我尝试编译代码时,它会尝试将所有其他动态作为静态。你能告诉我libgcc的库路径吗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多