【问题标题】:How to use OpenSSL with GCC?如何在 GCC 中使用 OpenSSL?
【发布时间】:2009-12-12 16:58:51
【问题描述】:

我正在尝试在 gcc 程序中使用 openssl,但它不起作用。

g++ server.cpp /usr/lib/libssl.a -o server

提供错误消息,-l 选项也一样。我必须在命令行上键入什么才能与 openssl 链接?文件/usr/lib/libssl.a 存在,但我仍然收到链接器错误no such function MD5() exists

【问题讨论】:

  • 我在您发布的命令中看不到 -l 的使用。并且不要以大写形式发布您的问题 - 大喊大叫是粗鲁的。
  • g++ server.cpp -L/usr/lib -lssl -o server 这样的东西应该可以解决问题。发布您遇到的确切错误,有人可以提供帮助。我在喊叫的事情上支持尼尔;)
  • 你错过了/usr/lib/libcrypto.alibcrypto 提供 libssl 使用的加密货币。以这个确切的顺序添加这两个,因为 LD 是单通道喜欢者:/usr/lib/libssl.a /usr/lib/libcrypto.a

标签: c++ gcc linker


【解决方案1】:

在不知道您所看到的确切错误的情况下,很难提供准确的解决方案。这是我最好的尝试。

根据您提供的信息,链接器似乎失败了,因为它在libssl.a 中找不到对md5 函数的引用。我相信这个函数实际上是在libcrypto 所以你可能还需要指定这个库。

g++ server.cpp -L/usr/lib -lssl -lcrypto -o server

【讨论】:

    【解决方案2】:

    您或其他人可能会发现这篇文章developerWorks 文章很有帮助。

    它描述了开始使用 OpenSSL 和 C/C++ 所需了解的大部分内容。如果您发现您正在遵循大多数相同的步骤,它可能会帮助您了解需要做什么。

    祝你好运。


    更新

    注意:保留这两个链接,因为它们用于发现新发现。

    【讨论】:

    • 三个链接是一样的。
    • 这确实应该是一条评论。如果链接断开,则此答案毫无价值。编辑 - 等等,链接已损坏。对我投反对票。
    【解决方案3】:

    在 Eclipse IDE 中选择 Your Project property --> c/c++ Build --> Settings gcc c linker(from tools settings)--> add to Library Search Path (-L)

    /usr/lib -lssl -lcrypto

    【讨论】:

      【解决方案4】:

      图书馆的位置不固定。就我而言(Ubuntu 18.04),.a 文件位于/usr/lib/x86_64-linux-gnu/。下面是完整的步骤:

      1) install the library,

      sudo apt install libss-dev
      

      2)check the installed files,

      dpkg-query -L libssl-dev
      

      3) 更改 gcc 标志 -L(library directory) -l(library name),例如,

      gcc XXX.c XXXXX.c -L/usr/lib/x86_64-linux-gnu/ -lcrypto -lssl
      

      【讨论】:

      • 仍然对我不起作用。并且libcrypto.{so/a} 存在于-L 指向的位置
      • 任何错误信息?它仍然来自 libcrypto 吗?例如,如果您使用的是 c++,则不要复制和粘贴我的命令,而是使用 c++。
      • 没关系,我使用的是 openssl 网站上的示例程序,但没有复制所有代码......哈哈
      • 第一步中的包应该是libssl-dev吗?
      • @Dipu 是的,应该是。不幸的是,Stackoverflow 不允许少于一个字符编辑
      【解决方案5】:

      除了接受的答案之外,我无法为 AES-CCM 编译 OpenSSL 示例:

      https://github.com/openssl/openssl/blob/master/demos/evp/aesccm.c

      为了让它发挥作用,我需要再添加两件事:

      • 动态链接库:-ldl
      • 使用POSIX线程支持的PThread库:-pthread(直接用-lpthread添加库为not recommended

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-11
        • 1970-01-01
        • 2019-05-29
        • 2021-08-28
        • 1970-01-01
        • 2016-10-24
        • 1970-01-01
        • 2020-06-02
        相关资源
        最近更新 更多