首页 > 解决方案 > 使用 gcc 版本 4.3.3 构建 OpenSSL 1.1.1c 的问题

问题描述

我正在尝试在使用gcc 4.3.3 完成配置并发出make以下错误消息后的工具链中编译 OpenSSL 1.1.1c 项目:

crypto/sha/keccak1600-armv4.S: Assembler messages:
crypto/sha/keccak1600-armv4.S:2203: Error: ']' expected -- `vst1.64 {q4},[r0:64]'
crypto/sha/keccak1600-armv4.S:2205: Error: ']' expected -- `vst1.64 {d18},[r1:64]'
crypto/sha/keccak1600-armv4.S:2248: Error: ']' expected -- `vld1.64 {q4},[r0:64]'
crypto/sha/keccak1600-armv4.S:2251: Error: ']' expected -- `vld1.64 {d18},[r1:64]'
crypto/sha/keccak1600-armv4.S:2326: Error: ']' expected -- `vst1.64 {q13},[r0:64]'
crypto/sha/keccak1600-armv4.S:2347: Error: ']' expected -- `vld1.64 d25,[r2:64]!'
...

我认为问题是因为我使用的 gcc 版本较低。我没有在OpenSSL Wiki中找到有关最低要求 gcc 版本的任何解释。

我该如何解决这个错误?

是gcc版本的问题吗?

标签: cgccopenssl

解决方案


看起来汇编器无法识别这种语法。

在查看了 OpenSSL 项目中其他生成的汇编文件后,我发现了一些汇编代码行,它们以相同的语法编写,在冒号 (:) 前多了一个逗号 (,)。所以我回到主代码,通过在冒号前添加逗号来更改尖线后,我已经能够成功构建。我在以下链接检查了此更改以查看它是否不会导致任何异常行为: https ://stackoverflow.com/a/57317021/6826476

我还提出了一个拉取请求以得到 OpenSSL 社区的确认并被接受: https ://github.com/openssl/openssl/pull/9518#pullrequestreview-274502366


推荐阅读