如何使用OpenSSL编译.c文件包括?

jah*_*max 67 c linux compiler-construction openssl compiler-errors

我正在尝试编译一个包含以下内容的小型.c文件:

#include <openssl/ssl.h>
#include <openssl/rsa.h>
#include <openssl/x509.h>
#include <openssl/evp.h>
Run Code Online (Sandbox Code Playgroud)

在我拥有.c文件的同一个文件夹中,我有一个/ openssl包含所有这些文件(以及更多),同样在synaptic包管理器中我看到安装了OpenSSL,我试图用这个编译:

gcc -o Opentest Opentest.c -lcrypto
Run Code Online (Sandbox Code Playgroud)

但我总是得到错误:

error: openssl/ssl.h: No such file or directory
error: openssl/rsa.h: No such file or directory
error: openssl/x509.h: No such file or directory
error: openssl/evp.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我想编译的文件只是一个.c文件,没有Makefile或./configure.

我已经尝试过:

env CFLAGS=-I/path/to/openssl/
Run Code Online (Sandbox Code Playgroud)

并尝试再次编译,但我得到相同的错误.

我应该怎么做才能用openssl编译包括?

caf*_*caf 100

您的包含路径表明您应该针对系统的 OpenSSL安装进行编译.你不应该.h在你的包目录中有这些文件 - 应该从中提取它们/usr/include/openssl.

普通的OpenSSL包(libssl)不包含.h文件 - 您还需要安装开发包.这是libssl-dev在Debian,Ubuntu和类似的发行版上以及libssl-develCentOS,Fedora,Red Hat和类似版本上命名的.

  • 如何在wondows7中安装`libssl-dev`? (3认同)
  • @Wafeeq 只需复制您的评论并将其粘贴到搜索引擎中即可。 (3认同)
  • 对吧.libssl-dev做了在Ubuntu上构建osslsigncode-1.5.2的技巧. (2认同)

Bor*_*lid 10

-I正确使用标志gcc.

gcc -I/path/to/openssl/ -o Opentest -lcrypto Opentest.c

-I应指向包含的目录openssl文件夹.

  • gcc -I/home/username/Programming/openssl/-o Opentest -lcrypto Opentest.c它给了我同样的错误:( (2认同)
  • 要详细说明你的答案,如果openssl文件夹是`/ path/to/openssl /`那么该选项需要是`-I/path/to /`@jahmax.所以你想要`/ home/username/Programming /` (2认同)

小智 7

我的英语不是很好,但我在一个中文网页上找到了这个问题的补丁

yum install openssl yum install openssl-devel

安装这个和它的它,在centos 5.4和keepalived-1.2.7测试]


Jef*_*Pal 7

您需要包含库路径 (-L/usr/local/lib/)

gcc -o Opentest Opentest.c -L/usr/local/lib/ -lssl -lcrypto

这个对我有用。