无法使用openssl c ++进行编译

时间:2012-08-01 14:25:43

标签: c++ compilation g++ openssl

我通过二进制文件安装了openssl,我在那个确切的位置有确切的文件。 但在编译时我面临这个错误。任何想法?

g++ main.cpp -I /usr/local/openssl/include/openssl/ 
In file included from main.cpp:1:0:
main.h:4:25: fatal error: openssl/evp.h: No such file or directory
compilation terminated.

更新:

以下命令完成了这项工作,但我仍然面临错误。

g++ main.cpp -I/usr/local/openssl/include -L/usr/local/openssl/lib main.cpp -lcrypto

/usr/local/openssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
dso_dlfcn.c:(.text+0x1d): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x33): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x3d): undefined reference to `dlclose'

有什么想法吗? :(


解决方案:

g++ main.cpp -I/usr/local/openssl/include -L/usr/local/openssl/lib main.cpp -lcrypto -ldl

2 个答案:

答案 0 :(得分:3)

更改为:

  

g ++ main.cpp -I / usr / local / openssl / include

因为include伪指令包含子目录的名称。

请注意,您必须添加要链接的openssl库。我不熟悉它,但是-lopenssl之类的东西,并添加一个要搜索的目录,以使用-L选项找到它。完整的命令会是这样的(因为我猜测lib目录和openssl的库名称):

  

g ++ main.cpp -I / usr / local / openssl / include -L / usr / local / openssl / lib main.cpp -lopenssl

答案 1 :(得分:0)

-I和路径之间没有空格。