Ubuntu系統下交叉編譯openssl

一、參考資料

OpenSSL&&libcurl庫的交叉編譯 - hesetone - 博客園

二、準備工作

1. 編譯環境

  • 宿主機:Ubuntu 20.04.6 LTS
  • Host:ARM32位
  • 交叉編譯器:arm-linux-gnueabihf-gcc-11.1.0

2. 設置交叉編譯工具鏈

在交叉編譯之前,需要設置交叉編譯工具鏈的環境變量。

export PATH=/path/to/toolchains/arm-linux-gnueabihf/bin:$PATH

三、交叉編譯 openssl

1. 下載源碼

GitHub - openssl/openssl: TLS/SSL and crypto library

tar -xvzf openssl-openssl-3.5.0.tar.gz

2. 生成configure配置

setarch i386 ./config no-asm enable-shared --prefix=/path/to/openssl-openssl-3.5.0/arm32_install --cross-compile-prefix=arm-linux-gnueabihf- -v

解釋說明

  • setarch i386:聲明生成的是32位CPU,如果是64位CPU則去除該部分。
  • enable-shared:生成動態連接庫。
  • no-asm: 在交叉編譯過程中不使用匯編代碼,以加速編譯過程,且arm不支持匯編代碼。

輸出示例:

yoyo@yoyo:~/360Downloads/openssl-openssl-3.5.0$ setarch i386 ./config no-asm enable-shared --prefix=/path/to/openssl-openssl-3.5.0/arm32_install --cross-compile-prefix=arm-linux-gnueabihf- -v
C compiler: gcc
C compiler vendor: gnu
C compiler version: 1101
Configuring OpenSSL version 3.5.0 for target linux-x86
Using os-specific seed configuration
Created configdata.pm
Running configdata.pm
Created Makefile.in
Created Makefile
Created include/openssl/configuration.h**********************************************************************
***                                                                ***
***   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.md file first)      ***
***                                                                ***
**********************************************************************

3. 修改Makefile

PLATFORM=arm
CROSS_COMPILE=arm-linux-gnueabihf-# 如果編譯出錯,則去掉 `-m32`
CNF_CFLAGS=-pthread # -m32
CNF_CXXFLAGS=-std=c++11 -pthread # -m32

注意:如果 Makefile 中存在 -m32-m64,則刪除。

4. 編譯安裝

make -j8
make install

編譯安裝之后的文件目錄:

yoyo@yoyo:~/360Downloads/openssl-openssl-3.5.0$ tree -L 2 arm32_install/
arm32_install/
├── bin
│   ├── c_rehash
│   └── openssl
├── include
│   └── openssl
├── lib
│   ├── cmake
│   ├── engines-3
│   ├── libcrypto.a
│   ├── libcrypto.so -> libcrypto.so.3
│   ├── libcrypto.so.3
│   ├── libssl.a
│   ├── libssl.so -> libssl.so.3
│   ├── libssl.so.3
│   ├── ossl-modules
│   └── pkgconfig
├── share
│   ├── doc
│   └── man
└── ssl├── certs├── ct_log_list.cnf├── ct_log_list.cnf.dist├── misc├── openssl.cnf├── openssl.cnf.dist└── private

5. 移植到開發板

# 拷貝 include
cp -r ./arm32_install/include/ /usr/local/openssl/# 拷貝lib
cp -r ./arm32_install/lib/ /usr/local/openssl/# 拷貝bin
cp -arf ./arm32_install/bin/ /usr/local/openssl/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/86431.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86431.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/86431.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據庫優化實戰分享:高頻場景下的性能調優技巧與案例解析

在實際開發與生產運維中&#xff0c;數據庫的性能瓶頸往往是影響系統響應速度和用戶體驗的關鍵因素。尤其是在高并發訪問、海量數據處理、復雜查詢邏輯等高頻場景下&#xff0c;數據庫優化不僅僅是“錦上添花”&#xff0c;更是“雪中送炭”。本篇博文將結合實際項目經驗&#…

Python importlib 動態加載

文章目錄 1. importlib 庫 概述2. 導入模塊&#xff08;import_module()&#xff09;2.1. 導入已安裝的模塊2.2. 導入子模塊2.3 通過字符串變量導入模塊 3. 重新加載模塊&#xff08;reload()&#xff09;4. 檢查模塊是否存在&#xff08;find_spec()&#xff09;5. 獲取模塊路…

(1-6-4) Java IO流實現文件的讀取與寫入

目錄 0.前述概要 1. File類 1.1 概述 1.2 File的重要方法 1.3 java.io 1.3.1 四種抽象類 1.3.2 流 1.3.3 其他常用 I/O 流 2. 字節輸入流&#xff08;InputSteam&#xff09; 2.1 關系類圖 2.2 應用實現 3. 字節輸出流&#xff08;OutputStream&#xff09; 3.1 …

【Proteus仿真】【32單片機-A010】步進電機控制系統設計

目錄 一、主要功能 二、使用步驟 三、硬件資源 四、軟件設計 五、實驗現象 聯系作者 一、主要功能 1、LCD顯示當前擋位、方向等&#xff1b; 2、按鍵控制步進電機擋位、方向等。 二、使用步驟 系統運行后&#xff0c;LCD1602顯示當前擋位、方向&#xff1b; 通過按鍵…

DeepSeek-R1-0528-Qwen3-8B為底座微調領域大模型準備:制作領域專用數據集

前言 想要微調領域大模型,數據的準備是必不可少的。然而微調大模型需要的數據極多,這樣花費很多人力和準備。有沒有方便又高效的方法?一下子就可以準備大量的領域專用數據集呢? 制作領域專用數據集 這里制作的數據集格式為使用的aphaca格式的 1.啟動vllm服務 python -m…

WEB3全棧開發——面試專業技能點P6后端框架 / 微服務設計

一、Express Express是國內大部分公司重點問的。我在本文最后&#xff0c;單獨講解了Express框架。 概念介紹 Express 是基于 Node.js 平臺的極簡、靈活且廣泛使用的 Web 應用框架。它提供了一系列強大的功能&#xff0c;用于構建單頁、多頁及混合型的 Web 應用程序和 API 服…

游戲開發中的CI/CD優化案例:知名游戲公司Gearbox使用TeamCity簡化CI/CD流程

案例背景 關于Gearbox&#xff1a; Gearbox 是一家美國電子游戲公司&#xff0c;總部位于德克薩斯州弗里斯科&#xff0c;靠近達拉斯。Gearbox 成立于1999年&#xff0c;推出過多款史上最具代表性的視頻游戲&#xff0c;包括《半衰期》、《戰火兄弟連》以及《無主之地》。 團隊…

視覺slam--三維剛體運動

線性代數 外積與矩陣乘法的等價性 歐拉角的奇異性--萬向死鎖 現象 第二個軸旋轉度&#xff0c;會導致第三個旋轉軸和惡原始坐標軸的第一個旋轉軸重合&#xff0c;導致第一次旋轉與第三次旋轉都使用了同一個軸進行旋轉&#xff0c;也就是本質上旋轉三次&#xff0c;但是只在兩個…

內窺鏡檢查中基于提示的息肉分割|文獻速遞-深度學習醫療AI最新文獻

Title 題目 Prompt-based polyp segmentation during endoscopy 內窺鏡檢查中基于提示的息肉分割 01 文獻速遞介紹 以下是對這段英文內容的中文翻譯&#xff1a; ### 胃腸道癌癥的發病率呈上升趨勢&#xff0c;且有年輕化傾向&#xff08;Bray等人&#xff0c;2018&#x…

CppCon 2015 學習:REFLECTION TECHNIQUES IN C++

關于 Reflection&#xff08;反射&#xff09; 這個概念&#xff0c;總結一下&#xff1a; Reflection&#xff08;反射&#xff09;是什么&#xff1f; 反射是對類型的自我檢查能力&#xff08;Introspection&#xff09; 可以查看類的成員變量、成員函數等信息。反射允許枚…

R語言速釋制劑QBD解決方案之一

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一個處方的R語言解決方案。 第一個處方研究評估原料藥粒徑分布、MCC/Lactose比例、崩解劑用量對制劑CQAs的影響。 第二處方研究用于理解顆粒外加硬脂酸鎂和滑石粉對片劑質量和可生產…

“詳規一張圖”——新加坡土地利用數據

在城市規劃和土地管理領域&#xff0c;精確且詳盡的空間數據是進行有效決策的基石。隨著地理信息系統&#xff08;GIS&#xff09;技術的發展&#xff0c;我們能夠以前所未有的精度和細節來捕捉、分析和展示土地利用信息。這不僅提升了數據的質量和可靠性&#xff0c;還使得城市…

LabVIEW雙光子成像系統技術

雙光子成像技術的核心特性 雙光子成像通過雙低能量光子協同激發機制&#xff0c;展現出顯著的技術優勢&#xff1a; 深層組織穿透能力&#xff1a;適用于活體組織深度成像 高分辨率觀測性能&#xff1a;滿足微觀結構的精細研究需求 低光毒性特點&#xff1a;減少對樣本的損傷…

MySQL自定義函數零基礎學習教程

1. 引言 想象一下&#xff0c;你在用計算器做數學題。每次計算"圓形面積"時&#xff0c;你都要輸入&#xff1a;3.14 半徑 半徑。如果能把這個計算步驟保存起來&#xff0c;下次只要輸入半徑就自動算出面積&#xff0c;那該多方便&#xff01; MySQL自定義函數就…

八股---7.JVM

1. JVM組成 1.1 JVM由哪些部分組成?運行流程? 難易程度:☆☆☆ 出現頻率:☆☆☆☆ Java Virtual Machine:Java 虛擬機,Java程序的運行環境(java二進制字節碼的運行環境)好處:一次編寫,到處運行;自動內存管理,垃圾回收機制程序運行之前,需要先通過編譯器將…

企業級AI-DevOps工具鏈的構成及實現方案

企業級AI-DevOps工具鏈的構成及實現方案 DevOps在AI大模型研發中的重要性及應用背景一、場景驅動的AI產品研發運營機制二、AI-DevOps生產線建設三、基于DevOps的AI大模型研發機制四、基于DevOps的智能體場景研發機制五、場景驅動的應用評估分析機制 DevOps在AI大模型研發中的重…

在 Spring Boot 項目里,MYSQL中json類型字段使用

前言&#xff1a; 因為程序特殊需求導致&#xff0c;需要mysql數據庫存儲json類型數據&#xff0c;因此記錄一下使用流程 1.java實體中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…

Python競賽環境搭建全攻略

Python環境搭建競賽技術文章大綱 競賽背景與意義 競賽的目的與價值Python在競賽中的應用場景環境搭建對競賽效率的影響 競賽環境需求分析 常見競賽類型&#xff08;算法、數據分析、機器學習等&#xff09;不同競賽對Python版本及庫的要求硬件與操作系統的兼容性問題 Pyth…

在 Win10 上 WSL 安裝 Debian 12 后,Linux 如何啟動 SMTP 服務?

在 WSL 的 Debian 12 中啟動 SMTP 服務&#xff08;以 Postfix 為例&#xff09;&#xff0c;請按以下步驟操作&#xff1a; 1. 安裝 Postfix sudo apt update sudo apt install postfix mailutils安裝過程中會彈出配置窗口&#xff1a; General type of mail configuration&a…

樹莓派超全系列教程文檔--(59)樹莓派攝像頭rpicam-apps

這里寫目錄標題 rpicam-apps libcamera 文章來源&#xff1a; http://raspberry.dns8844.cn/documentation 原文網址 rpicam-apps 樹莓派操作系統 Bookworm 將相機捕捉應用程序從 libcamera-\* 重命名為 rpicam-*。符號鏈接允許用戶暫時使用舊名稱。盡快采用新的應用程序名稱…