C++ 生成32位OpenSSL FIP(nmake f ms\ntdll.mak):宏中的非法字符
我的目标是在启用FIPS的情况下,以32位构建OpenSSL(OpenSSL-1.0.2n)共享库(DLL)。按照openssl.org()规定的过程,在构建FIPS容器之后,我做了:C++ 生成32位OpenSSL FIP(nmake f ms\ntdll.mak):宏中的非法字符,c++,windows,openssl,fips,C++,Windows,Openssl,Fips,我的目标是在启用FIPS的情况下,以32位构建OpenSSL(OpenSSL-1.0.2n)共享库(DLL)。按照openssl.org()规定的过程,在构建FIPS容器之后,我做了: perl配置VC-WIN32 fips——使用fipslibdir=C:\usr\local\ssl\fips-2.0 ms\do_\nasm nmake-f ms\ntdll.mak 最后一个(nmake f ms\ntdll.msk)抛出此错误: makefile(243):致命错误U1001:语法错误:宏停
这并不是说这很有帮助,但有问题的字符在OpenSSL源代码根目录下的makefile中。我将从第241行开始粘贴:
ENGINES_ASM_OBJ='$(ENGINES_ASM_OBJ)' \
PERLASM_SCHEME='$(PERLASM_SCHEME)' \
FIPSLIBDIR='${FIPSLIBDIR}' \
FIPSDIR='${FIPSDIR}' \
FIPSCANLIB="$${FIPSCANLIB:-$(FIPSCANLIB)}" \
THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES=
这并不是说这很有帮助,但有问题的字符在OpenSSL源代码根目录下的makefile中。我将从第241行开始粘贴:
ENGINES_ASM_OBJ='$(ENGINES_ASM_OBJ)' \
PERLASM_SCHEME='$(PERLASM_SCHEME)' \
FIPSLIBDIR='${FIPSLIBDIR}' \
FIPSDIR='${FIPSDIR}' \
FIPSCANLIB="$${FIPSCANLIB:-$(FIPSCANLIB)}" \
THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES=
您只是在命令中的“f”前面缺少一个小破折号,确切的命令应该是:
nmake -f ms\ntdll.mak
由于缺少破折号,实际上是在顶级目录中的Makefile上调用nmake,该目录碰巧存在,但与nmake不兼容,因此出现了错误
我发现了这一点,因为我在尝试在Windows上构建OpenSSL时收到了相同的错误消息,而在我的情况下,我只是在没有任何参数的情况下调用nmake(因为我没有先阅读INSTALL.W32文件…)您只是在命令中的“f”之前缺少了一个小破折号,确切的命令应该是:
nmake -f ms\ntdll.mak
由于缺少破折号,实际上是在顶级目录中的Makefile上调用nmake,该目录碰巧存在,但与nmake不兼容,因此出现了错误
我发现了这一点,因为我在尝试在Windows上构建OpenSSL时收到了相同的错误消息,在我的例子中,我只是在没有任何参数的情况下调用nmake(因为我没有先阅读INSTALL.W32文件…)也许可以运行预处理器,看看所有这些宏都扩展到什么地方并分析代码?我不太确定该怎么做,因为我对构建过程了解得不够。我会研究一下。我能够创建32位共享库(DLL)有一次。后来我也遇到了同样的错误。也许可以运行一个预处理器,看看所有这些宏都扩展到了什么地方,然后分析代码?不太确定该怎么做,因为我对构建过程了解得不够。我会研究它。我能够创建32位共享库(DLL)有一次。后来我又犯了同样的错误。这不是答案,而是一条评论。评论需要遵守最低的声誉要求,你可以在这里找到更多信息:@Router Gray谢谢你的想法(回答或评论,或者我们想叫它什么)这让我觉得我可能没有正确设置fips环境变量。我假设因为参数在命令中,所以我不需要设置环境变量。可能makefile在这两个位置都需要文件夹路径。我会尽快尝试,看看这是否解决了问题。这不是答案,而是注释。注释是根据最低声誉要求,您可以在此处了解更多信息:@Router Gray感谢您的想法(回答或评论或我们希望称之为的任何内容)这让我觉得我可能没有正确设置fips环境变量。我假设因为参数在命令中,所以我不需要设置环境变量。可能makefile在这两个位置都需要文件夹路径。我会尽快尝试,看看这是否解决了问题。