错误"错误A2009:表达式中的语法错误"在构建OpenSSL x64静态库时

时间:2012-05-11 06:07:31

标签: windows visual-studio openssl 64-bit nmake

我需要Openssl的静态库。我按照here的说明进行操作。我做的步骤如下:

  1. 运行“Visual Studio 2008 x64交叉工具命令提示符”。
  2. 执行 perl配置VC-WIN64A no-shared no-idea
  3. 执行 ms \ do_win64a
  4. 编辑 ms \ nt.mak ,并在输出目录中将“32”更改为“64”。
  5. 执行 nmake -f ms \ nt.mak
  6. 完成所有这些后,我在第5步收到错误:

    Assembling: tmp32\md5-x86_64.asm
    tmp32\md5-x86_64.asm(8) : error A2009: syntax error in expression
    tmp32\md5-x86_64.asm(9) : error A2009: syntax error in expression
    tmp32\md5-x86_64.asm(677) : error A2009: syntax error in expression
    tmp32\md5-x86_64.asm(678) : error A2009: syntax error in expression
    NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 8\VC
    \BIN\x86_amd64\ml64.EXE"' : return code '0x1'
    Stop.
    

    这里出了什么问题?或者任何人都可以为我提供一个指向我可以在Visual Studio 20005中使用的Openssl静态库的链接吗?

3 个答案:

答案 0 :(得分:2)

我找到了这个问题的答案。不知何故,我的机器中没有安装nasm。这里显示的错误也没有说明关于nasm的任何内容。

答案 1 :(得分:2)

我也有问题,发现Perl太老了。 x86_64-xlate.pl中的以下行未生成" PTR",尽管变量$ PTR已设置:

$func .= "  mov QWORD${PTR}[8+rsp],rdi\t;WIN64 prologue\n";

当我安装ActiveState Perl 5.16.3时,它运行良好!

(我只安装了Visual Studio masm,我想用nasm生成的代码会起作用,因为nasm似乎不需要PTR关键字)。

答案 2 :(得分:0)

似乎活跃的状态在我的环境中也很老旧。我不确定我是否使用了正确版本的nasm,但我的ml64.exe与命令行参数的nasm不兼容。人们说我必须在我的环境中添加asm变量。 所以我在crypto \ perlasm \ x86_64-xlate.pl文件中进行了全局更改: “PTR”[“to”PTR} [“。 只是在变量之后添加了一个空格。