如何在GCC中使用OpenSSL?

Jon*_*aro 20 c++ linker gcc

我正在尝试在gcc程序中使用openssl,但它无法正常工作.

g++ server.cpp /usr/lib/libssl.a -o server
Run Code Online (Sandbox Code Playgroud)

给出错误消息,与-l选项的任何内容一样.我必须在命令行上键入什么才能与openssl链接?该文件/usr/lib/libssl.a存在,但我仍然得到链接器错误no such function MD5() exists.

jsc*_*ier 25

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

根据您提供的信息,听起来好像链接器失败,因为它无法找到对该md5函数的引用libssl.a.我相信这个功能实际上是,libcrypto所以你可能还需要指定这个库.

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


wil*_*ill 11

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

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

祝好运.

  • 三个链接是相同的. (3认同)
  • 这确实应该是一个评论。如果链接断开,这个答案就毫无价值。编辑 - 等等,链接已损坏。我投反对票。 (2认同)

小智 5

在Eclipse IDE中选择Your Project属性 - > c/c ++ Build - > Settings gcc c linker(来自工具设置) - >添加到Library Search Path(-L)

/ usr/lib -lssl -lcrypto


小智 5

图书馆的位置不固定。在我的情况下(Ubuntu 18.04),.a 文件位于/usr/lib/x86_64-linux-gnu/. 所以这里是完整的步骤:

1)安装库

sudo apt install libss-dev
Run Code Online (Sandbox Code Playgroud)

2)检查安装的文件

dpkg-query -L libssl-dev
Run Code Online (Sandbox Code Playgroud)

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

gcc XXX.c XXXXX.c -L/usr/lib/x86_64-linux-gnu/ -lcrypto -lssl
Run Code Online (Sandbox Code Playgroud)