2017-07-24 52 views
1

跟着很多教程到目前爲止,並有各種錯誤。下面是完整的一步一步的過程,我跟着並最終出現OpenSSH編譯錯誤。錯誤交叉編譯OpenSSH(嵌入式Linux)

下載的zlib和交叉編譯($ HOME /桌面/ zlib的/ zlib的-1.2.5 /輸出)

cd /home/armsdk/Desktop/ 
mkdir zlib 
cd Zlib 
wget http://www.zlib.net/fossils/zlib-1.2.5.tar.gz 
tar xzvf zlib-1.2.5.tar.gz 
cd zlib-1.2.5 
mkdir output 
./configure --prefix=/home/armsdk/Desktop/Zlib/zlib-1.2.5/output CC=arm-cortexa9-linux-gnueabi-gcc 
make 
make install 

下載OpenSSL和交叉編譯:($ HOME /桌面/ OpenSSL的/ OpenSSL_CC )

mkdir OpenSSL 
cd OpenSSL 
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz 
tar xzvf openssl-1.0.1g.tar.gz  
cd openssl-1.0.1g/ 
export cross=arm-cortexa9-linux-gnueabi- 
./Configure dist --prefix=$HOME/Desktop/OpenSSL/OpenSSL_CC 
make CC="${cross}gcc" AR="${cross}ar r" RANLIB="${cross}ranlib" 
make install 

交叉編譯的OpenSSH:

./configure --prefix=$HOME/Desktop/OpenSSH/OpenSSH_CC --host=arm --with-libs --with-zlib=$HOME/Desktop/Zlib/zlib-1.2.5/output --with-ssl-dir=$HOME/Desktop/OpenSSL/OpenSSL_CC --disable-etc-default-login CC=arm-cortexa9-linux-gnueabi-gcc AR=arm-cortexa9-linux-gnueabi-ar 
make 

抵達CRYPT錯誤:

openbsd-compat//libopenbsd-compat.a(xcrypt.o): In function `xcrypt': 
/home/armsdk/Desktop/OpenSSH/openssh-5.2p1/openbsd-compat/xcrypt.c:78: undefined reference to `crypt' 
collect2: error: ld returned 1 exit status 

請幫我解決。我需要的是使用GDBSERVER(通過Eclipse)


編譯的系統運行 SFTP服務器爲遠程調試:Debian的喘息

目標板:嘉滾裝TX6S

目標處理器:恩智浦i.MX6S7

主機Linux版本:3.16.0-0.bpo.4-AMD64

目標Linux版本:4.4.0-00118-g26d6b51

交叉編譯:GCC-ARM-cortexa9-Linux的gnueabi


更新1:

添加下面線都給錯誤:

-I/home/armsdk/Desktop/OpenSSL/OpenSSL_CC/include 

錯誤

configure: error: unrecognized option: -I/home/armsdk/Desktop/OpenSSL/OpenSSL_CC/include 

試過這種替代,但地穴錯誤依然存在。

--includedir=/home/armsdk/Desktop/OpenSSL/OpenSSL_CC/include 

更新2:

試圖-lcrypt標誌如下建議:undefined reference to `crypt'但這並不有錯誤的任何變化。

make clean 
make -lcrypt 

更新3: 加入 'CFLAGS = -lcrypt' 和現在的誤差變

./configure --prefix=$HOME/Desktop/OpenSSH/OpenSSH_CC --host=arm --with-libs --with-zlib=$HOME/Desktop/Zlib/zlib-1.2.5/output --with-ssl-dir=$HOME/Desktop/OpenSSL/OpenSSL_CC --disable-etc-default-login CC=arm-cortexa9-linux-gnueabi-gcc AR=arm-cortexa9-linux-gnueabi-ar CFLAGS=-lcrypt 

錯誤

​​

更新4: 更新了LDFLAGS和CFLAGS如下:

./configure --prefix=$HOME/Desktop/OpenSSH/OpenSSH_CC --host=arm --with-libs --with-zlib=$HOME/Desktop/Zlib/zlib-1.2.5/output --with-ssl-dir=$HOME/Desktop/OpenSSL/OpenSSL_CC --disable-etc-default-login CC=arm-cortexa9-linux-gnueabi-gcc AR=arm-cortexa9-linux-gnueabi-ar LDFLAGS=-L/home/cross-gcc-4.9.1-2.19-18-armv7a-soft/x86_64-pc-linux-gn‌​‌​u/arm-cortexa9-lin‌​ux‌​-gnueabi/sys-roo‌​t/li‌​b CFLAGS=-lcrypt 

問題仍然是相同的:

​​

更新5:

我終於它成功地'MAKE',但不能'安裝'

./configure --prefix=$HOME/Desktop/OpenSSH/OpenSSH_CC --host=arm --with-libs --with-zlib=$HOME/Desktop/Zlib/zlib-1.2.5/output --with-ssl-dir=$HOME/Desktop/OpenSSL/OpenSSL_CC --disable-etc-default-login CC=arm-cortexa9-linux-gnueabi-gcc AR=arm-cortexa9-linux-gnueabi-ar LDFLAGS='-L/home/cross-gcc-4.9.1-2.19-18-armv7a-soft/x86_64-pc-linux-gn‌​‌​u/arm-cortexa9-lin‌​ux‌​-gnueabi/sys-roo‌​t/li‌​b -lcrypt' 

make  
make install 

錯誤時, 'make install' 命令

(umask 022 ; ./mkinstalldirs /var/empty) 
/usr/bin/install -c -m 0755 -s ssh /home/armsdk/Desktop/OpenSSH/OpenSSH_CC/bin/ssh 
strip: Unable to recognise the format of the input file `/home/armsdk/Desktop/OpenSSH/OpenSSH_CC/bin/ssh' 
/usr/bin/install: strip process terminated 

更新6:希望最終

所以最後我能夠通過添加標誌產生輸出「 - 禁用帶'

./configure --prefix=$HOME/Desktop/OpenSSH/OpenSSH_CC --host=arm --disable-strip --with-libs --with-zlib=$HOME/Desktop/Zlib/zlib-1.2.5/output --with-ssl-dir=$HOME/Desktop/OpenSSL/OpenSSL_CC --disable-etc-default-login CC=arm-cortexa9-linux-gnueabi-gcc AR=arm-cortexa9-linux-gnueabi-ar LDFLAGS='-L/home/cross-gcc-4.9.1-2.19-18-armv7a-soft/x86_64-pc-linux-gn‌​‌​u/arm-cortexa9-lin‌​ux‌​-gnueabi/sys-roo‌​t/li‌​b -lcrypt' 
make 
make install 
雖然

一個小問題,我有這個錯誤:

mkdir /home/armsdk/Desktop/OpenSSH/OpenSSH_CC/etc 
./ssh-keygen: 1: ./ssh-keygen: Syntax error: word unexpected (expecting ")") 
./ssh-keygen: 1: ./ssh-keygen: Syntax error: word unexpected (expecting ")") 
./ssh-keygen: 1: ./ssh-keygen: Syntax error: word unexpected (expecting ")") 
make: *** [host-key] Error 2 
+0

的可能的複製[未定義參照\'隱窩'](https://stackoverflow.com/questions/5989444/undefined-reference-to-crypt) – Gaurav

+0

添加-lcrypt標誌提供給編譯器標誌後,該錯誤現在與https:// stackoverflow匹配。com/questions/5989444/undefined-reference-to-crypt 不知道現在該做什麼,上面線程的解決方案是添加-lcrypt標誌。 –

+0

你的系統中是否有用於arm的libcrypt庫?我在/ usr/arm-linux-gnueabi /以及在x86文件夾下 –

回答

0

的解決辦法是

Add the libcrypt path to the compiler, for some reason the compiler couldnt find the right library

LDFLAGS='-L/home/cross-gcc-4.9.1-2.19-18-armv7a-soft/x86_64-pc-linux-gn‌​‌​u/arm-cortexa9-lin‌​ux‌​-gnueabi/sys-roo‌​t/li‌​b -lcrypt' 

Added '--disable-strip' to overcome the STRIP error with the install command

我最後的configure命令如下:

./configure --prefix=$HOME/Desktop/OpenSSH/OpenSSH_CC --host=arm --disable-strip --with-libs --with-zlib=$HOME/Desktop/Zlib/zlib-1.2.5/output --with-ssl-dir=$HOME/Desktop/OpenSSL/OpenSSL_CC --disable-etc-default-login CC=arm-cortexa9-linux-gnueabi-gcc AR=arm-cortexa9-linux-gnueabi-ar LDFLAGS='-L/home/cross-gcc-4.9.1-2.19-18-armv7a-soft/x86_64-pc-linux-gn‌​‌​u/arm-cortexa9-lin‌​ux‌​-gnueabi/sys-roo‌​t/li‌​b -lcrypt' 
make 
make install 

感謝@Jakuje,@Gaurav帕塔克和@ k_ka ž

1

您需要添加-lcryptLDFLAGS,因爲它是什麼是傳遞給鏈接(不是`CFLAGS)。

+0

這確實有效,但由於某些原因,我無法生成可執行文件。將更新OP並回答一次,我可以關閉它。 (使用umask 022; ./mkinstalldirs在/ var /空) 在/ usr/bin中/安裝-c -m 0755 -s SSH /家庭/ armsdk /桌面/ OpenSSH的/ OpenSSH_CC /斌/ SSH 條:無法識別輸入文件'的格式/家庭/ armsdk /桌面/ OpenSSH的/ OpenSSH_CC /斌/ SSH」 在/ usr/bin中/安裝:剝離過程異常終止 化妝:*** [安裝檔案]錯誤1 –

+0

你可能不想在你的系統中運行'install'。你安裝二進制文件看起來像試圖去除二進制文件中的調試信息或其他東西,但不知道如何去做。 – Jakuje

+0

如何在沒有安裝命令的情況下獲得可執行文件?我在這裏錯過了什麼? –