簡體   English   中英

交叉編譯“OpenSSL”錯誤

[英]Cross compiling “OpenSSL” Error

我在我的c代碼中使用了include:<openssl / md5.h>。 當我使用“gcc”編譯器編譯它時我沒有任何錯誤,但是當我用交叉編譯器“arm-linux-gnueabi-gcc”編譯它時,我有以下錯誤:

/usr/include/openssl/e_os2.h:56:33: fatal error: openssl/opensslconf.h: No such file or directory 
compilation terminated.

我認為這個錯誤是因為我在交叉編譯器文件夾“/ usr / arm-linux-gnueabi-gcc”中沒有openssl庫。

任何人都可以說我這是錯誤的原因嗎? 我如何為交叉編譯器安裝openssl庫?

我開始交叉編譯,我對此並不了解。 謝謝你的時間!

我知道這個問題有點老了,但是既然我遇到了同樣的問題,我將把它留在這里以備將來參考。

我找到的解決方案是使用已安裝的交叉編譯器手動編譯OpenSSL,然后手動將其安裝到交叉編譯庫文件夾中。

首先,我安裝了交叉編譯器(我使用的是Ubuntu 14.04)。 我安裝了C編譯器和C ++編譯器。 我還安裝了兩個交叉編譯工具鏈,一個具有硬浮點支持(arm-linux-gnueabihf),另一個沒有(arm-linux-gnueabi)。 創建了兩個目錄(如問題所述) /usr/arm-linux-gnueabi/usr/arm-linux-gnueabihf ,其中應安裝交叉編譯的庫。

sudo apt-get install {gcc,g++}-arm-linux-gnueabi{,hf}

其次,克隆了OpenSSL Git存儲庫並查看了我感興趣的版本(1.0.2):

git clone https://github.com/openssl/openssl
git checkout OpenSSL_1_0_2       # or another version

然后,我配置了交叉編譯環境並更改了安裝目錄(前綴),並按照INSTALL文件中提供的說明構建了庫(並強制使用特定的交叉編譯工具鏈):

export CROSS=arm-linux-gnueabi # or arm-linux-gnueabihf
export AR=${CROSS}-ar
export AS=${CROSS}-as
export CC=${CROSS}-gcc
export CXX=${CROSS}-g++
export LD=${CROSS}-ld

./Configure --prefix=/usr/${CROSS} os/compiler:${CC}
make
sudo make install

您可以重復該過程並使用兩個工具鏈進行編譯( arm-linux-gnueabiarm-linux-gnueabihf )。

希望這可以幫助。

在我的情況下,完全相同的錯誤消息(但我在64位機器上編譯32位)。 我通過安裝另一個架構解決了這個問

apt-get install libssl-dev:i386

曾為特定平台構建的庫將用於特定平台,並且只有在其二進制兼容時才能在其他平台上使用。

對於交叉編譯,您可能也需要不同平台的二進制文件。

關於此錯誤,似乎您沒有提到OpenSSL頭文件的包含路徑。

沒有庫,您將收到鏈接器錯誤,而不是編譯器錯誤。

在這種情況下,編譯器以某種方式無法找到頭文件。 因此,請確保提供包含路徑。

sudo apt install libssl-dev   

這也適用於一些古怪的Linux發行版。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM