使用MinGW/MSYS编译OpenSSL时出现错误

7

请从官方 OpenSSL 网站下载源文件。我按照 OpenSSL 文件夹中的 INSTALL.M32 文件进行操作。我打开 msys.bat,进入 OpenSSL 文件夹,然后输入以下命令:

$ ./config

它显示“配置为MinGW”,然后我输入
$ make

几分钟后收到错误:

md2test.c:1:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
6个回答

15
我只是打开了导致错误的文件(/test/"md5test.c; rc5test.c; jpaketest.c"),并替换了该行。
dummytest.c
对不起,您需要提供更具体的内容才能进行翻译。 "

to

" 不足以理解上下文或意图。请提供更多细节。
#include "dummytest.c"

这是与上述解决方案相同的解决方案,只是速度稍快...


1
笔误:/test/"md2test.c 中的 2 写成了 5 +1 - Gonzo

14

问题在于md2test.c实际上是指向dummytest.c的一个符号链接软链接

如果您使用除以下方法以外的任何方式解压openssl-1.0.1c.tar.gz,则会导致错误。

tar xf openssl-1.0.1c.tar.gz

那么这些符号链接将不被保留。在 Cygwin 上可以正常工作;对于 MinGW 不确定。


1
有所帮助的是使用tar -xvzf openssl-1.0.1c.tar.gz重新打包,但这次使用解除引用tar选项“-h”tar -cvhzf openssl.tar.gz openssl-1.0.1,然后再次提取它。很蠢,但它有效。不知道如何在提取文件时取消引用。 - tmanthey

3

在我的案例中,问题是少数测试文件(我记得是3个)的名字不是C++代码,而是文件名(类似于dummitest.c)。我从另一个文件夹中复制和粘贴了正确的代码到这些文件中,并使用相同的名称,一切都很好。


2
这听起来像是符号链接的问题。其他受影响的文件是 rc5test.cjpaketest.c - Nathan Osman

2
你用什么程序解压缩了“openssl-1.0.0x.tar.gz”?7-zip是一个很好的程序,但似乎存在一个错误。

使用tar或其他解压缩程序,如BreadZip

tar zvxf openssl-1.0.0x.tar.gz

这与上面提到的解决方案相同,只是速度稍快... :)


1

问题在于压缩包中的符号链接MinGW/MSYS无法理解。

可以通过在提取时使用--derefence (-h)选项来解决此问题。

例如:tar -xzvfh archive.tar.gz

来自http://www.gnu.org/software/tar/manual/html_node/dereference.html

当从归档文件中读取时,--dereference' (-h') 选项会导致tar在写入或读取存档文件中命名的文件时遵循已经存在的符号链接。


0

我遇到了同样的问题。 由于测试构建时出现问题,我只是没有进行构建:

make Makefile openssl.pc libssl.pc libcrypto.pc build_libs build_apps build_tools

这是一个可怕的解决方案,但它似乎能够工作。你可以得到库和工具,但没有测试套件。

我希望有人能给出更好的答案和/或修复代码中的问题(如果有的话)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接