openssl交叉编译(这次基本上正规了)

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。

源码指引:github源码指引_初级代码游戏的博客-CSDN博客


        此示例用的是openssl-1.1.1k.tar.gz,不过方法应该各个版本都适用(同样的方法也用在了最新的4.3版上)。交叉编译工具链用的是arm官方交叉编译工具,我用过不同的交叉编译工具链,结果发现官方的最好用。

目录

源码包上传

 配置(自动)./config

查看支持的系统./Configure(不带参数)

配置系统./Configure(带参数)

主要编译参数说明

--cross-compile-prefix=PREFIX

--prefix=DIR

--openssldir=DIR

多说两句


源码包上传

tar -xvf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k

        检查一下有没有libssl.so在目录树里面:“find . -name libssl.so*”,输出应该是空的。

 配置(自动)./config

./config

        这是自动检测系统,不能做交叉编译(除非整个环境都配置为交叉编译)。

        所以我们不用这个。

        配置完成后生成Makefile,然后就可以像通常那样编译和安装了:

make
make test
make install

查看支持的系统./Configure(不带参数)

        openssl已经支持很多系统,配置好了需要的参数,所以尽量用已经支持的,不要自己去修改。查看支持的系统:

./Configure

        输出是支持的系统列表:

root@debian:~/src/openssl-1.1.1k# ./Configure
Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-egd] [sctp] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--config=FILE] os/compiler[:flags]pick os/compiler from:
BS2000-OSD BSD-generic32 BSD-generic64 BSD-ia64 BSD-sparc64 BSD-sparcv8
BSD-x86 BSD-x86-elf BSD-x86_64 Cygwin Cygwin-i386 Cygwin-i486 Cygwin-i586
Cygwin-i686 Cygwin-x86 Cygwin-x86_64 DJGPP MPE/iX-gcc UEFI UWIN VC-CE VC-WIN32
VC-WIN32-ARM VC-WIN32-ONECORE VC-WIN64-ARM VC-WIN64A VC-WIN64A-ONECORE
VC-WIN64A-masm VC-WIN64I aix-cc aix-gcc aix64-cc aix64-gcc android-arm
android-arm64 android-armeabi android-mips android-mips64 android-x86
android-x86_64 android64 android64-aarch64 android64-mips64 android64-x86_64
bsdi-elf-gcc cc darwin-i386-cc darwin-ppc-cc darwin64-arm64-cc darwin64-ppc-cc
darwin64-x86_64-cc gcc haiku-x86 haiku-x86_64 hpux-ia64-cc hpux-ia64-gcc
hpux-parisc-cc hpux-parisc-gcc hpux-parisc1_1-cc hpux-parisc1_1-gcc
hpux64-ia64-cc hpux64-ia64-gcc hpux64-parisc2-cc hpux64-parisc2-gcc hurd-x86
ios-cross ios-xcrun ios64-cross ios64-xcrun iossimulator-xcrun iphoneos-cross
irix-mips3-cc irix-mips3-gcc irix64-mips4-cc irix64-mips4-gcc linux-aarch64
linux-alpha-gcc linux-aout linux-arm64ilp32 linux-armv4 linux-c64xplus
linux-elf linux-generic32 linux-generic64 linux-ia64 linux-mips32 linux-mips64
linux-ppc linux-ppc64 linux-ppc64le linux-sparcv8 linux-sparcv9 linux-x32
linux-x86 linux-x86-clang linux-x86_64 linux-x86_64-clang linux32-s390x
linux64-mips64 linux64-s390x linux64-sparcv9 mingw mingw64 nextstep
nextstep3.3 sco5-cc sco5-gcc solaris-sparcv7-cc solaris-sparcv7-gcc
solaris-sparcv8-cc solaris-sparcv8-gcc solaris-sparcv9-cc solaris-sparcv9-gcc
solaris-x86-gcc solaris64-sparcv9-cc solaris64-sparcv9-gcc solaris64-x86_64-cc
solaris64-x86_64-gcc tru64-alpha-cc tru64-alpha-gcc uClinux-dist
uClinux-dist64 unixware-2.0 unixware-2.1 unixware-7 unixware-7-gcc vms-alpha
vms-alpha-p32 vms-alpha-p64 vms-ia64 vms-ia64-p32 vms-ia64-p64 vos-gcc
vxworks-mips vxworks-ppc405 vxworks-ppc60x vxworks-ppc750 vxworks-ppc750-debug
vxworks-ppc860 vxworks-ppcgen vxworks-simlinuxNOTE: If in doubt, on Unix-ish systems use './config'.

        大部分情况我们是为arm交叉编译,所需的系统类型参数是“linux-armv4”和“linux-aarch64”。

配置系统./Configure(带参数)

./Configure linux-armv4 --cross-compile-prefix=/root/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-

        配置为arm32位系统,第一个参数为系统类型,第二个参数为交叉编译工具链前缀(取决于你的工具链安装位置和名称),输出:

Configuring OpenSSL version 1.1.1k (0x101010bfL) for linux-armv4
Using os-specific seed configuration
Creating configdata.pm
Creating Makefile**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL file first)         ***
***                                                                ***
**********************************************************************

        注意最上面一行“Configuring OpenSSL version 1.1.1k (0x101010bfL) for linux-armv4” ,然后就可以用make编译了。

        编译结果就在当前目录下,用file检查文件类型:

root@debian:~/src/openssl-1.1.1k# ls
ACKNOWLEDGEMENTS  build.info  configdata.pm   crypto   e_os.h    include        libcrypto.pc      libssl.map     LICENSE   NOTES.ANDROID  NOTES.VMS   README         test
apps              CHANGES     Configurations  demos    external  INSTALL        libcrypto.so      libssl.pc      Makefile  NOTES.DJGPP    NOTES.WIN   README.ENGINE  tools
appveyor.yml      config      Configure       doc      FAQ       libcrypto.a    libcrypto.so.1.1  libssl.so      ms        NOTES.PERL     openssl.pc  README.FIPS    util
AUTHORS           config.com  CONTRIBUTING    engines  fuzz      libcrypto.map  libssl.a          libssl.so.1.1  NEWS      NOTES.UNIX     os-dep      ssl            VMS
root@debian:~/src/openssl-1.1.1k# file libssl.so.1.1 libcrypto.so.1.1
libssl.so.1.1:    ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=5ee86f9d91497d1ff2beec6250df479b9805c44c, with debug_info, not stripped
libcrypto.so.1.1: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=c6a762c6f2cc50e686ea4d9c5a4bb67d808a2763, with debug_info, not stripped

        “ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV)”,这说明确实是交叉编译出来的结果。

主要编译参数说明

        这些参数同时适用于config和Configure。

--cross-compile-prefix=PREFIX

        这个前面已经用到了,是交叉编译工具链的前缀,默认编译器是gcc,加了这个前缀就成了“/root/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc”(按照前面的设置),ar也是如此,编译相关的几个命令都加上了这个前缀。

        如果一个特定的交叉编译环境已经把CC设置成了交叉编译工具(专用的交叉编译工具一般如此,而我用的这个是arm官网提供的标准交叉编译工具),则不需要使用这个参数。

        这个参数也可以用环境变量CROSS_COMPILE代替。命令行参数会覆盖环境变量设置。

--prefix=DIR

        安装路径,交叉编译无所谓,反正只要两个so或a就行了。

        make install将把输出复制到安装路径。

--openssldir=DIR

        运行时使用的配置和默认证书、密钥的存放位置。一般也不关心这个。

多说两句

        如果需要修改生成的Makefile一般还是参数或交叉编译工具设置有问题,用标准交叉编译工具可以减少此类问题(如果可以的话)。很多时候出问题还是文档没吃透。

        为了编译更快可以用“make -j4”,4代表4个任务并行,可以设置为和CPU核数相同。

        如果编译出错,为了查看编译参数到底有什么问题,你可能非常需要“make VERBOSE=1”,VERBOSE=1将打开命令回显,这样就可以仔细分析是哪个头文件目录没包含还是哪个库没有链接。如果是cmake,需要在cmake 时加上“-DCMAKE_VERBOSE_MAKEFILE=ON”,这样生成的makefile就会包含“VERBOSE=1”。

        


(这里是文档结束)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/495059.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速部署一套Kubernetes集群

一、准备环境 服务器规划&#xff1a; 角色 IP地址 k8s-master 192.168.1.71 k8s-node1 192.168.1.72 k8s-node2 192.168.1.73 服务器要求&#xff1a; 建议最小硬件配置&#xff1a;2核CPU、2G内存、20G硬盘。服务器可以访问互联网&#xff0c;会联网下载镜像。 软…

Github Copilot:已免费,速回归!!!

引言 2024 年 12 月&#xff0c;GitHub 宣布推出GitHub Copilot Free&#xff0c;这一消息让不少开发者为之欢呼雀跃。毕竟&#xff0c;谁不喜欢 白嫖 呢&#xff1f; GitHub Copilot 不仅提供了 AI 辅助编程功能&#xff0c;还与自家 VS Code 无缝集成&#xff0c;简直是编程…

使用TC命令模拟弱网丢包

在网络测试和优化过程中&#xff0c;模拟弱网环境&#xff08;如高延迟、丢包、抖动等&#xff09;是非常重要的一环。tc&#xff08;Traffic Control&#xff09;是 Linux 内核中的一个强大工具&#xff0c;它可以用于流量整形、流量控制、队列管理等。通过 tc&#xff0c;我们…

概率论 期末 笔记

第一章 随机事件及其概率 利用“四大公式”求事件概率 全概率公式与贝叶斯公式 伯努利概型求概率 习题 推导 一维随机变量及其分布 离散型随机变量&#xff08;R.V&#xff09;求分布律 利用常见离散型分布求概率 连续型R.V相关计算 利用常见连续型分布的计算 均匀分布 正态…

【文档搜索引擎】搜索模块的完整实现

调用索引模块&#xff0c;来完成搜索的核心过程 主要步骤 简化版本的逻辑&#xff1a; 分词&#xff1a;针对用户输入的查询词进行分词&#xff08;用户输入的查询词&#xff0c;可能不是一个词&#xff0c;而是一句话&#xff09;触发&#xff1a;拿着每个分词结果&#xf…

如何在centos系统上挂载U盘

在CentOS上挂载NTFS格式的U盘,需要执行一系列步骤,包括识别U盘设备、安装必要的软件、创建挂载点,并最终挂载U盘。以下是在CentOS上挂载NTFS格式U盘的详细步骤: 一、准备工作 确认CentOS版本: 确保你的CentOS系统已经安装并正常运行。不同版本的CentOS在命令和工具方面可能…

pytest自动化测试数据驱动yaml/excel/csv/json

数据驱动 数据的改变从而驱动自动化测试用例的执行&#xff0c;最终引起测试结果的改变。简单说就是参数化的应用。 测试驱动在自动化测试中的应用场景&#xff1a; 测试步骤的数据驱动&#xff1b;测试数据的数据驱动&#xff1b;配置的数据驱动&#xff1b; 1、pytest结合数据…

ECharts散点图-气泡图,附视频讲解与代码下载

引言&#xff1a; ECharts散点图是一种常见的数据可视化图表类型&#xff0c;它通过在二维坐标系或其它坐标系中绘制散乱的点来展示数据之间的关系。本文将详细介绍如何使用ECharts库实现一个散点图&#xff0c;包括图表效果预览、视频讲解及代码下载&#xff0c;让你轻松掌握…

高强度螺栓等级划分

高强度螺栓的等级划分主要依据其性能等级&#xff0c;常见的等级有8.8级和10.9级。这些等级标号由两部分数字组成&#xff0c;分别表示螺栓材料的公称抗拉强度值和屈强比值。 8.8级高强度螺栓&#xff1a;表示螺栓杆的抗拉强度不小于800MPa&#xff0c;屈强比&#xff08;屈服强…

WEB UI 创建视图

1 视图名称 (点第1创建视图) 2 模型节点 可以空 3 上下文节点 4 新增节点下的属性 &#xff0c;参考结构(先建好的结构) 5 选择视图类型&#xff1a;&#xff08;表单&#xff0c; 列表&#xff09; 表单 &#xff1a;单条数据 列表 &#xff1a;多条数据&#xff08;表格…

linux-19 根文件系统(一)

之前提到过&#xff0c;linux的目录是一个倒置的树&#xff0c;它通过层次性的方式来组织&#xff0c;管理整个系统的文件&#xff0c;而这本身实际上是通过文件系统。文件系统&#xff0c;大家记得文件系统是内核的主要功能之一&#xff0c; 它的主要目的就是实现本机上的某一…

四种电子杂志制作软件

​大家好&#xff0c;今天给大家种草四种超级实用的电子杂志制作软件。无论你是专业出版人士&#xff0c;还是业余爱好者&#xff0c;这四款软件都能帮助你轻松制作出精美的电子杂志。让我们一起来看看吧&#xff01; 1.FLBOOK FLBOOK是一款在线仿真翻页制作H5电子画册&#x…

webserver log日志系统的实现

参考博客&#xff1a;https://blog.csdn.net/weixin_51322383/article/details/130474753 https://zhuanlan.zhihu.com/p/721880618 阻塞队列blockqueue 1、阻塞队列的设计流程是什么样的 它的底层是用deque进行管理的 阻塞队列主要是围绕着生产者消费者模式进行多线程的同步和…

kkfileview代理配置,Vue对接kkfileview实现图片word、excel、pdf预览

kkfileview部署 官网&#xff1a;https://kkfileview.keking.cn/zh-cn/docs/production.html 这个是官网部署网址&#xff0c;这里推荐大家使用docker镜像部署&#xff0c;因为我是直接找运维部署的&#xff0c;所以这里我就不多说明了&#xff0c;主要说下nginx代理配置&am…

《Vue3实战教程》5:响应式基础

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 响应式基础​ API 参考 本页和后面很多页面中都分别包含了选项式 API 和组合式 API 的示例代码。现在你选择的是 组合式 API。你可以使用左侧侧边栏顶部的“API 风格偏好”开关在 API 风格之间切换。 声明响应式状态…

EasyExcel停更,FastExcel接力

11月6日消息&#xff0c;阿里巴巴旗下的Java Excel工具库EasyExcel近日宣布&#xff0c;将停止更新&#xff0c;未来将逐步进入维护模式&#xff0c;将继续修复Bug&#xff0c;但不再主动新增功能。 EasyExcel以其快速、简洁和解决大文件内存溢出的能力而著称&#xff0c;官方…

深入解读数据资产化实践指南(2024年)

本指南主要介绍了数据资产化的概念、目标和意义&#xff0c;以及实施数据资产化的过程。指南详细阐述了数据资产化的内涵&#xff0c;包括数据资产的定义、数据资产化的目标与意义&#xff0c;并介绍了数据资产化的过程包括业务数据化、数据资源化、数据产品化和数据资本化。 …

广州大学计算机组成原理课程设计

一.课设性质&#xff0c;目的&#xff0c;任务 《计算机组成与系统结构课程设计》是计算机学院各专业集中实践性环节之一&#xff0c;是学习完《计算机组成与系统结构》课程后进行的一次全面的综合练习。其目的是综合运用所学计算机原理知识&#xff0c;设计并实现一台模型计算…

MimicBrush:智能图像编辑新宠,能否革新你的创意设计?

一、介绍 MimicBrush 是一款由阿里巴巴和香港大学联合研发的图像编辑工具&#xff0c;它通过模仿参考图像&#xff0c;对目标图像选定区域进行自动局部编辑。以下是关于 MimicBrush 的详细介绍&#xff1a; 1.技术特点 智能匹配 &#xff1a;利用尖端 AI 技术&#xff0c;Mi…

QT用Enigmavb 打包成单独exe

QT用这个工具打包成单个exe&#xff0c;然后再用winrar打包成zip可以发给别人 在之前需要用QT的release打包 之前的文章QTrelease打包【非单个exe】 Enigmavb 打包流程&#xff1a; 安装过程&#xff1a; next-》i accept -》选择安装位置 -》next -》Create a desktop ic…