如何在GCC中使用OpenSSL?

时间:2009-12-12 16:58:51

标签: c++ gcc linker

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

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

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

5 个答案:

答案 0 :(得分:24)

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

根据您提供的信息,听起来好像链接器失败,因为它找不到md5libssl.a函数的引用。我相信这个函数实际上在libcrypto中,所以你可能也需要指定这个库。

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

答案 1 :(得分:11)

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

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

祝你好运。

答案 2 :(得分:5)

在Eclipse IDE中,选择您的项目属性 - > c / c ++ Build - >设置gcc c链接器(来自工具设置) - >添加到库搜索路径(-L)

/ usr / lib -lssl -lcrypto

答案 3 :(得分:1)

库的位置不固定。就我而言(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

答案 4 :(得分:0)

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

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

为了使它工作,我需要再添加两件事:

  • Dinamic Linking Library:-ldl
  • 使用POSIX线程支持的PThread库:-pthread(使用-lpthread直接添加库not recommended