C语言 为什么openssl/ssl.h只包含一个相对路径



我通过执行以下操作,使用 MSVC++ 2013 Express 编译器构建了 OpenSSL:

  • 从这里安装 ActivePerl 5.16.3。
  • 抓取 openssl-1.0.1e.tar.gz并将其解压缩到 C:OpenSSLWin64 .
  • 打开"VS2013 x64 Cross Tools 命令提示符"并cd到我提取存档的目录。
  • 运行以下命令:

    perl 配置 VC-WIN64A毫秒\do_win64anmake -f mstdll.mak

此操作已完成,没有错误(构建了正确的 DLL)。然而,发生了一件非常奇怪的事情。如果我打开openssl/ssl.h,文件的内容是:

../../ssl/ssl.h

由于这显然不是有效的C/C++,由于上述问题,我无法编译任何依赖于OpenSSL标头的应用程序。我做错了什么?

duskwuff的评论确实是正确的。问题是7-Zip没有正确提取存档中的符号链接。解决方案是下载 GnuWin32 的 tar 命令行实用程序并使用它来提取存档:

tar -xvf openSSL-1.0.1e.tar.gz

这不仅仅是openssl/ssl.h的情况。我看到的几乎所有文件都是这种情况。

我猜这些信息是在构建OpenSSL时使用的,以将包含文件生成到您在makefile中提到的包含文件夹中(对于Windows,它是nt.mak或ntdll.mak)。

如果您生成或构建库,您将在日志中看到头文件正在复制到 makefile 中提到的文件夹中,在那里您将找到看起来像有效 C 头文件的头文件。您实际上使用这些生成的头文件,而不是此头文件。

它看起来像一个用于生成头文件的模板。

最新更新