當前位置:首頁 » 編程軟體 » openssl111交叉編譯問題

openssl111交叉編譯問題

發布時間: 2023-04-15 17:14:34

A. 在unbuntu下使用openssl 寫一個加密的C程序,編譯提示找不到頭文件openssl/*.h

哥門 <openssl/aes.h> 里 的openssl只是文件夾名字而已,
linux下面 /usr/local/include/ /usr/include/ 這兩個路徑是默認引用的。
所以你沒加 -I 也是可以編譯的 。
當交叉編譯時,那就完全不一樣了,必須配置好所有路徑。

B. 交叉編譯zlib出錯

$ export CC=mipsel-linux-gcc
$ ./configure --prefix=/opt --shared
$ make CC=mipsel-linux-gcc
$ make install

ps:此處的環境CC=mipsel-linux-gcc 記得換回來!

C. 一個C語言工程在linux下用gcc編譯可以通過,但用arm-linux-gcc交叉編譯會報錯。

這個很正常,交叉編譯的頭文件和標準的不一樣,定義的時候缺少一些宏豎滑或者函數,根據情況稍微修改一般可以的。除非是操作系統不一樣飢纖蠢否則一般都可以很快改正。
舉一個不容易改正的例子,MingW是一種Windows下的GCC移植版本,但是它沒有fork,所以如果程序中存在fork就會報錯,但是這個錯誤很難爛陪修正,因為Windows裡面沒有fork函數。

D. 如何將openssl aes源碼移植到嵌入式

移植步驟如下:
1、首先將openssl 源碼download下來;
2、在你的嵌入式開發環境中,交叉編譯openssl源碼,生成庫文件;
3、在你的嵌入式程序中,添加對交叉編譯後的openssl庫文件的支持,並在socket通信中調用ssl相關的函數。

E. 安裝openssl時報錯

應該是執行config時出錯了。可以這樣執行:

./Configure --prefix=/安裝目錄 os/compiler:arm-linux-gcc(交叉編譯工具)

然後檢查一下Makefile,如果Make之後編譯工具不對,需要手動修改一下
CROSS_COMPILE= arm-linux-
CC= $(CROSS_COMPILE)gcc
然後再試試

F. jdk nginx. redis 在arm和x86要分別編譯

一、注意openssl和pcre只需要把源碼解壓縮,不需要單獨交叉編譯!
開始的時候不知道,傻傻的把這兩個庫弄半天把它們編譯過去了。誰知道nginx的--with-pcre和--with-openssl選項,指定的是這兩個庫源代碼的路徑,並非安裝路徑!nginx的編譯系統只會從/usr、/usr/local等少數幾個目錄查找是否有預編譯的pcre、zlib、openssl等庫。對於交叉編譯,直接把交叉編譯後的pcre等安裝在/usr、/usr/local顯然不合適,因此需要使用--with-pcre和--with-openssl指定源代碼的位置

二、交叉編譯nginx
在x64 linux上面編譯非常簡單的nginx,沒想到在交叉編譯的時候巨多坑。下面一個configure是編譯成功的配置

進入/usr/local/src目錄,創建nginx文件夾。入剛創建的nginx目錄,下載nginx的tar包,解壓,進入解壓生成的目錄,進行配置(後面有補充,建議通讀一遍)編譯安裝查找安裝路徑,在執行make編譯時,可以添加要編譯的參數,已安裝完成,比如我現在要新增 http_stub_status_mole 模塊參數,那麼我只要把該參數添加進去然後重新編譯即可,需要注意的是原先編譯過的參數也要加進來。
進入nginx的安裝目錄,因為我安裝的時候沒有添加任何參數,所以這里我只需要執行

我這里只需要這一個模塊,如果你安裝的nginx還使用其他的模塊,記得在上面的編譯命令中加上。
另外,這里只能 make 千萬別 make install,否則就覆蓋安裝了。

  • make完成後,在源碼目錄下會有一個objs目錄,objs目錄下就多了個nginx,這個就是新版本的程序了;

  • 然後將objs目錄下的nginx替換之前已經安裝過的nginx(建議將舊的nginx程序做下備份)


G. 海思平台配置toolchain.cmake

交叉編譯,在我們的host宿主機器稿知鄭上需要生成target目標機器的程序, 使用CMake的Toolchain管理這里的各種環境變數和配置,就很好.

CMake給交叉編譯預留了一個變數-- CMAKE_TOOLCHAIN_FILE , 它定義了一個文件的路徑, 這個文件就是 toolchain ,我們可以在裡面配置 C_COMPILER , CXX_COMPILER ,如果用Qt的話需要更改 QT_QMAKE_EXECUTABLE 以及如果用 BOOST 的話需要更改的 BOOST_ROOT (具體查看相關 Findxxx.cmake 裡面指定的路徑), 因此,這個 toolchain 內嵌了一系列需要改變並且需要set的交叉環境的設置.

下面歸納一些比較重要的:

下面是一個常規的配置

這樣就完成了相關toolChain的編寫,之後,你可以靈活的選擇到底採用宿主機版本還是開發機版本,之間的區別僅僅是一條 -DCMAKE_TOOLCHAIN_FILE=./cross.toolChain.cmake ,更爽的是,如果你有很多程序需要做轉移,但目標平台是同一個,你僅僅需要寫一份toolChain放在一個地方,就可以給所有工程使用。

稍微大一點的項目都會用到一些外部依賴庫或者tool,CMake提供了 FIND_PROGRAM() , FIND_LIBRARY() , FIND_FILE() , FIND_PATH() and FIND_PACKAGE() 等命令來進行外部依賴的搜索查找。

但是有個問題,假如我們在給一個ARM處理器的移動設備做交叉編譯,其中需要尋找 libjpeg.so ,假如 FIND_PACKAGE(JPEG) 返回的是 /usr/lib/libjpeg.so ,那麼這就會有問題,因為找到的這個 so 庫只是給你的宿主機系統(例如一個x86的Ubuntu主機)服務的,不能用於Arm系統。所以你需要告訴CMake去其它地方去查找,這個時候你就需要配置以下的變數了:

在工程中一般通過如下步驟, 進入工程文件, 創建 arm-himix200-linux.cmake 文件, 內容是:

然後創建build文件夾, 進行編譯(注意, 需要指定 CMAKE_MAKE_PROGRAM , 不指定的話好像編譯有問題...):

在我的 toolchain 文件中,我指定:

因為我項猛戚目中 CMakeLists.txt 中需要查找 OpenSSL 和 curl , 因此會用到CMake自帶的 FindOpenSSL.cmake 和 FindCurl.cmake 兩個腳本, 他們會用到 Findxxx 命令, 會去我指定的目錄去搜鍵頌索對應的庫

https://www.cnblogs.com/rickyk/p/3875334.html
http://www.cmake.org/Wiki/CMake_Cross_Compiling

H. OpenSSL的編譯和使用

個人博客地址: https://blog.yookingh.cn
該文章地址: https://blog.yookingh.cn/dev/201215-openssl.html

從NDK r19開滑知始,由於gcc兼容clang的編譯方式有問題,該版本乎高已經移除了相關gcc文件,所以用老方法交叉編譯Openssl的時候,會提示找不到gcc文件。

參考: https://blog.csdn.net/zoujin6649

build-android-single.sh 腳本文件及注釋如下歲讓尺

執行腳本

修改腳本為 循環編譯 ,編譯所有需要的文件

build-android-all.sh 腳本文件內容如下

執行腳本方法同上,如為第一次執行(即沒有Makefile文件),仍需要執行 ./config 循環編譯無需執行 make clean

參考: https://blog.csdn.net/iamadk

Python 腳本內容

創建編譯執行腳本

執行編譯腳本同r15,第一次需要執行 ./config 生成Makefile,第二次或以上需要清除make記錄即 make clean ,接下來依舊是創建 循環編譯 腳本

I. 交叉編譯openssl for arm-linux-androideabi-gcc工具鏈

在Ubuntu 16.04 64bit上搭建的android編譯環境交叉編譯SDK的openssl-1.0.2j生成庫,但是使用ndk-build時,卻出現了「Fatal error: Invalid -march= option: `armv5te'」錯誤

android-ndk-r10e 的交叉編譯鏈在Ubuntu 16.04 32bit系統上沒有問題,後來網路搜索後嘗試了各種方法還是找不到問題所在,最後在 CSDN問答 這邊找到了相關描述,果不其然,升級了交叉編譯鏈 android-ndk-r12b 後編譯就通過了。

J. 如何對lighttpd進行交叉編譯安裝並配置lighttpdweb伺服器

1. 編譯、安裝
1.1. 先到lighttpd官網下載對應版本的軟體包:
http://www.lighttpd.net/
我下載的是 lighttpd-1.4.30.tar.gz
1.2. 將壓縮包解壓到任意目錄(我的是 /root/Desktop/common)得到文件夾 lighttpd-1.4.30
1.3. 在文件夾 lighttpd-1.4.30 中創建shell腳本,命名為:configure-arm.sh
1.4. 在shell腳本 configure-arm.sh 中輸入如下代碼:
#! /bin/sh
CC=arm-linux-gcc
AR=arm-linux-ar LD=arm-linux-ld RANLIB=arm-linux-ranlib
STRIP=arm-linux-strip ./configure --prefix=/opt/web/lighttpd-1.4.30-arm
--host=arm-linux --build=i686-pc-linux --disable-FEATURE --enable-shared
--disable-static --disable-lfs --disable-ipv6 --without-PACKAGE
--without-valgrind --without-openssl --without-kerberos5 --without-pcre
--without-zlib --without-bzip2 --without-lua

1.5. 打開控制台,cd進入 lighttpd-1.4.30 目錄
1.6. 給 configure-arm.sh 文件添加可執行屬性,執行命令:
chmod +x configure-arm.sh
1.7. 配置lighttpd,執行命令:
./configure-arm.sh
1.8. 編譯lighttpd,執行命令:
make
1.9. 安裝lighttpd,執行命令:
make install

熱點內容
ftp上傳網頁 發布:2025-07-15 01:13:09 瀏覽:181
音樂文件夾圖標 發布:2025-07-15 01:03:41 瀏覽:494
安卓機怎麼反向充電 發布:2025-07-15 01:03:40 瀏覽:500
電腦使用華為雲伺服器 發布:2025-07-15 00:48:10 瀏覽:533
中考應該如何排解壓力 發布:2025-07-15 00:17:54 瀏覽:362
安卓第三方應用軟體是什麼 發布:2025-07-15 00:12:06 瀏覽:149
程序業務配置存儲 發布:2025-07-14 23:52:16 瀏覽:685
csdn編程挑戰 發布:2025-07-14 23:52:08 瀏覽:791
國外乘法演算法 發布:2025-07-14 23:51:14 瀏覽:11
phpexplodet 發布:2025-07-14 23:46:44 瀏覽:566