2

我在这个网站上找到了一个问题的答案,我试图从这里实现。

我从这里下载并安装了 openssl 。我执行了提取文件中安装文本中提到的每个步骤。

$ ./config $ make $ make test $ make install

这些都没有错误地完成。然后,当我尝试使用已回答问题中的示例代码编译有关如何生成 SHA 哈希的代码时,出现以下错误:

致命错误:openssl.h:没有这样的文件或目录

我是否需要做更多的事情来创建 openssl 头文件,因为我认为在安装 openssl 后没有任何问题会自动创建它?这是我第一次向 C 添加库,所以请原谅我的任何天真。

谢谢阅读。

4

2 回答 2

1

尝试在编译示例程序时包含 -I 选项以指定 openssl 目录。

这是来自 openssl 目录中的 INSTALL 文件:

  *  WRITING applications

     To write an application that is able to handle both the new
     and the old directory layout, so that it can still be compiled
     with library versions up to OpenSSL 0.9.2b without bothering
     the user, you can proceed as follows:

     -  Always use the new filename of OpenSSL header files,
        e.g. #include <openssl/ssl.h>.

     -  Create a directory "incl" that contains only a symbolic
        link named "openssl", which points to the "include" directory
        of OpenSSL.
        For example, your application's Makefile might contain the
        following rule, if OPENSSLDIR is a pathname (absolute or
        relative) of the directory where OpenSSL resides:

        incl/openssl:
                -mkdir incl
                cd $(OPENSSLDIR) # Check whether the directory really exists
                -ln -s `cd $(OPENSSLDIR); pwd`/include incl/openssl

        You will have to add "incl/openssl" to the dependencies
        of those C files that include some OpenSSL header file.

     -  Add "-Iincl" to your CFLAGS.

     With these additions, the OpenSSL header files will be available
     under both name variants if an old library version is used:
     Your application can reach them under names like <openssl/foo.h>,
     while the header files still are able to #include each other
     with names of the form <foo.h>.

我建议您阅读 openssl 源目录中的 INSTALL 文件以获取更多详细信息。

于 2012-06-25T11:47:23.910 回答
0

如果有人遇到同样的问题,即安装后 openssl 目录没有出现在他们的包含目录中,sudo apt-get install libssl-dev请像 user1479836 所说的那样使用。

于 2021-06-09T16:42:41.637 回答