首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为arm linux构建openssl

问如何为arm linux构建openssl
EN

Stack Overflow用户
提问于 2020-03-23 21:20:29
回答 1查看 12.3K关注 0票数 4

我使用Ubuntu和gcc交叉编译器x86。

我想为arm linux构建打开ssl github项目。

我读过这些文件,但不知道如何构建它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-24 03:32:16

假设这里是为64位arm Linux系统构建的,下面的自给过程应该可以在Ubuntu 19.10 x86_64上为我工作。

代码语言:javascript
复制
# openssl
wget https://www.openssl.org/source/openssl-1.1.1e.tar.gz
tar zxf openssl-1.1.1e.tar.gz

# a toolchain I know is working
wget "https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz?revision=61c3be5d-5175-4db6-9030-b565aae9f766&la=en&hash=0A37024B42028A9616F56A51C2D20755C5EBBCD7" -O gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
mkdir -p /opt/arm/9
tar Jxf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz -C /opt/arm/9

# building
cd openssl-1.1.1e
./Configure linux-aarch64 --cross-compile-prefix=/opt/arm/9/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- --prefix=/opt/openssl-1.1.1e --openssldir=/opt/openssl-1.1.1e -static
make install

ls -gG /opt/openssl-1.1.1e/bin/
total 10828
-rwxr-xr-x 1     6214 Mar 23 23:27 c_rehash
-rwxr-xr-x 1 11077448 Mar 23 23:27 openssl

file /opt/openssl-1.1.1e/bin/openssl
/opt/openssl-1.1.1e/bin/openssl: ELF 64-bit LSB executable, ARM aarch64, version 1 (GNU/Linux), statically linked, for GNU/Linux 3.7.0, with debug_info, not stripped

在您想要构建具有硬件浮点支持的32位arm系统的情况下,我们只需要稍微修改以下三个命令的过程:

代码语言:javascript
复制
wget  "https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz?revision=fed31ee5-2ed7-40c8-9e0e-474299a3c4ac&la=en&hash=76DAF56606E7CB66CC5B5B33D8FB90D9F24C9D20" -O gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz    
tar Jxf gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz -C /opt/arm/9

./Configure linux-generic32 --cross-compile-prefix=/opt/arm/9/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf- --prefix=/opt/openssl-1.1.1e --openssldir=/opt/openssl-1.1.1e -static

更新:在阅读评论时提供更多信息。

1)正如其名称所暗示的那样,linux-generic32是一个通用的32位linux目标,应该在任何32位系统上工作。你可以在互联网上的很多地方找到这些信息,比如这里。缺点是可执行文件可能无法针对目标进行优化。如果您阅读Configure脚本,您将看到可以指定用于指导编译的环境变量列表。例如,如果你的SoC是皮质-A9,你可以通过设置CFLAGS传递选项-mtune=cortex-a9 -你会在互联网上找到很多信息,但我建议你看看Configure,它确实包含了很多有用的评论。

顺便说一句,如果您使用一个不存在的目标执行Configure,您将得到所有可能的目标的列表:

代码语言:javascript
复制
./Configure does-not-exist

2) hf代表硬件浮点。有些32位arm SoC有浮点操作的硬件支持,有些则没有.由于您没有指定您所针对的SoC的确切品牌/模型,所以我进行了猜测,并使用了一个工具链,以便在出现时为arm浮点硬件生成代码。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60821697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档