當前位置:首頁 » 編程軟體 » opensslcmake編譯

opensslcmake編譯

發布時間: 2024-09-08 09:08:48

A. Mac上安裝OpenSSL

Mac系統上原本就內置了OpenSSL,若需要安裝或更新,可以通過執行命令「brew install openssl」或者「brew reinstall openssl」來實現。

接下來,在GitHub上找到相應的鏈接,並使用clone命令將openssl文件夾下載到當前目錄中。如果你對命令行操作不熟悉,可以參考廖雪峰老師的教程進行學習。

然後,運行「./config --prefix=/usr/local/openssl -g3」命令,其中可以指定安裝目錄,使用「-g3」選項可以開啟調試模式,方便學習。

執行「make test」命令,檢查是否能夠成功編譯。如果沒有問題,執行「make install」命令,即可將OpenSSL安裝到指定的目錄「/usr/local/openssl」下,安裝成功。

如果打算在CLion中使用OpenSSL,需要對CMakeLists.txt文件進行修改,添加相應的配置內容。

修改完成後,通常可以正常運行。以下是一個示例,展示了如何使用SHA1函數(雖然該函數已不再適用)。

若需要使用gcc編譯器,需要進一步學習如何編寫makefile。

在解決鏈接庫問題時,查閱了相關資料,例如stackoverflow.com/quest...和blog.csdn.net/beyond702...,最終問題得到解決,盡管過程中遇到了許多挑戰。

雖然已經能夠運行,但仍然存在不少問題。在這種情況下,對問題的理解和解決略顯無奈。

B. 海思平台配置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

C. CMake是如何找到OpenSSL的

在實驗環境配置中,我們隔離安裝OpenSSL至特定目錄,確保不會影響系統原有的OpenSSL版本。通過執行相關命令後,我們通過ls操作確認OpenSSL相關文件被正確安置於指定目錄。
為了簡化依賴配置,我們利用了pkg-config工具。這一工具能根據.pc文件自動構建依賴關系,我們通過OpenSSL提供的openssl.pc文件獲取配置信息,為CMake所用。
安裝路徑下生成的openssl.pc文件包含了關鍵配置信息,我們使用cat命令查看內容,以了解OpenSSL的具體安裝路徑和相關設置。在編譯engntru工程時,通過指定參數-DCMAKE_PREFIX_PATH,我們將CMake的搜索路徑指向了特定的OpenSSL安裝目錄。
為了進一步解析OpenSSL,我們引入了FindOpenSSL.cmake腳本。此腳本作為CMake調用find_package(OpenSSL REQUIRED)命令時的觸發點,它負責調用pkg-config工具,解析openssl.pc文件以獲取配置信息。
解析openssl.pc文件後,pkg-config設置了一系列環境變數,如_OPENSSL_INCLUDEDIR和_OPENSSL_LIBDIR,便於後續的find_path、find_library等命令進行查找。通過調用這些命令,並結合設置的環境變數,我們能精確定位到OpenSSL的頭文件和庫文件。
最終,一系列變數如OPENSSL_INCLUDE_DIR、OPENSSL_LIBRARIES、OPENSSL_VERSION等被設置,這些變數在CMake構建過程中被利用,確保了工程能正確引用和鏈接OpenSSL。
至此,CMake通過指定的目錄、調用的pkg-config工具和FindOpenSSL.cmake腳本,成功地識別並利用了OpenSSL,完成工程構建。這一過程展示了CMake在依賴管理、路徑指定及自動化配置方面的強大功能,使得復雜的庫依賴問題得以簡化處理。

D. 如何正確生成RabbitMQ-C客戶端庫

1. 下載 rabbitmq-c-master源碼
2. 下載 rabbitmq-codegen 源碼

3. 將 rabbitmq-codegen 中的內容拷貝到 rabbitmq-c-master 中的 codegen 目錄下(如果沒有該目錄請自行創建)

4.打開openssl目錄,修改ms文件夾下的ntdll.mak文件,將CFLAG的/WX選項去掉
5.執行Configure 運行perl Configure VC-WIN32
6.運行 ms\do_ms
7.運行 nmake -f ms\ntdll.mak 執行make進行編譯.....nmake -f ms\ntdll.mak 命令將OpenSSL編譯成動態庫,如果想編譯成靜態庫應使用 nmake -f ms\nt.mak
8.運行 nmake -f ms\ntdll.mak test.檢查上一部編譯是否成功。正常的話會執行編譯後的測試程序
至此OpenSSL在windows下編譯完成,編譯得到的dll和lib文件位置:靜態庫libeay32.lib和ssleay32.lib位於out32文件夾下,動態庫libeay32.dll,libeay32.lib,ssleay32.dll,ssleay32.lib位於out32dll文件夾下。
9.使用VS2010編譯OpenSSL的過程記錄
10. 通過 win32 的 cmd 或者 cmake-gui 執行相應的命令進行相關文件生成。
11.生成的sln用vs2010打開 編譯 若成功後在librabbitmq文件夾debug中有rabbitmq.1.lib和rabbitmq.1.dll文件
12. 下載的 rabbit-c-master 源碼中沒有文件 amqp_framing.h 和 amqp_framing.c,這兩個文件是通過 codegen.py 和 amqp_codegen.py 產生的。
13.使用 CMake 時路徑中最好不要出現中文。

熱點內容
我的電腦玩cf卡該換什麼配置 發布:2024-11-25 01:20:38 瀏覽:871
雲加密服務是什麼情況 發布:2024-11-25 01:18:16 瀏覽:881
租雲伺服器會提供ip嗎 發布:2024-11-25 01:18:13 瀏覽:451
安卓原生刷機包在哪裡下載 發布:2024-11-25 01:13:16 瀏覽:298
安卓怎麼改字體 發布:2024-11-25 01:12:32 瀏覽:477
我的世界java伺服器怎麼設置主城 發布:2024-11-25 01:12:22 瀏覽:634
安卓虛擬機為什麼會卡頓 發布:2024-11-25 01:07:57 瀏覽:558
雲伺服器網關系列 發布:2024-11-25 01:00:42 瀏覽:971
圖靈姬編程 發布:2024-11-25 00:52:40 瀏覽:314
編譯好的程序不閃一下就沒了 發布:2024-11-25 00:48:51 瀏覽:549