本人使用環(huán)境 Host linux(from ubuntu): jeos[just enougth OS] 交叉編譯器: /opt/timesys/toolchains/armv5l-linux/bin/armv5l-linux-gcc target Processor: ARM926EJ-S rev 5 (v5l) Hardware: Atmel AT91SAM9260-EK 先開始libCurl 的移植過程: 下載curl-7.20.0.tar.bz2解壓至本目錄,開始configure,由于之前一直發(fā)現(xiàn)配置不過,出現(xiàn)多次錯誤,這里直接給出正確的配置: cd curl-7.20.0 && ./configure --prefix=/win/530/curl/build --build=i686-linux --host=arm-linux CC=/opt/timesys/toolchains/armv5l-linux/bin/armv5l-linux-gcc CFLAGS='-Os' --enable-debug --enable-optimize --enable-static --disable-ftp --without-zlib --disable-rtsp --disable-dict --disable-proxy --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smtp --disable-ipv6 --enable-http -enable-crypto-auth --without-gnutls --without-nss --without-ca-bundle --with-random=/dev/urandom export LDFLAGS="-static configure碰到的錯誤: google后發(fā)現(xiàn)答案: 按照回答,由于是在主機上配置、編譯,所以配置期間沒找到 適合于目標系統(tǒng)的隨機數(shù)生成器,具體在/dev/urandom下面,但是我找了下,確實是有的: [root@openssl]# ls -al /dev/urandom [root@openssl]# file /dev/urandom 引用回答的原文:
在網(wǎng)上找了多次,沒找到解決方法。因為之前編譯的時候使用到庫一直沒指定連接庫,因為這個是有編譯器自己自動連接的,最后靈機一動,想想給加上鏈接庫試試: LDFLAGS="-static -L/opt/timesys/toolchains/armv5l-linux/lib" 沒想到無奈的問題解決了。 configure編譯后的信息如下 #configure: Configured to build curl/libcurl: 編譯安裝 make clean &&make && make install openssl 下載openssl-0.9.8m.tar.gz解壓至本目錄,開始configure: ./config --prefix=/win/530/curl/openssl/build os/compiler:/opt/timesys/toolchains/armv5l-linux/bin/armv5l-linux-gcc 最開始使用: CC=/opt/timesys/toolchains/armv5l-linux/bin/armv5l-linux-gcc CFLAGS='-Os' export LDFLAGS="-static -L/opt/timesys/toolchains/armv5l-linux/lib" 打死也編譯不過去,本想改改config/Configure的,但是真的沒法下手:寫的太混亂了。比明朝晚期的朝廷還要O__O"… 后來找到一篇文章 原來CC需要用os/compiler去指定的!暈倒,最開始在INSTALL里面看到這個選項還不以為然…… 但是按照這個方法也不行: /opt/timesys/toolchains/armv5l-linux/bin/armv5l-linux-gcc -I. -I.. -I../include -DOPENSSL_THREADS -march=pentium -c -o cryptlib.o cryptlib.c 方法也挺簡單的,起因是-march=pentium這個編譯開關(guān): 搜索Makefile,刪掉這個信息即可。當然主要是這行: CFLAG= -DOPENSSL_THREADS -march=pentium 前面的都好像沒用處,去掉不去掉都可以。 按照博主的說明,當然最后需要修改 AR= ar $(ARFLAGS) r 為 AR= /opt/timesys/toolchains/armv5l-linux/bin/armv5l-linux-ar $(ARFLAGS) r 不修改也編譯的過去,估計連接的庫是適合于x86的吧。 到libcurl下載簡單的c文件,寫好Mikefile后,加載到目標機上運行: # ./t 我暈倒。。然后開始編譯 ssl庫見上面的編譯方法。編譯期間偶然在/opt/timesys/toolchains/armv5l-linux/armv5l-linux/lib找到了鏈接庫 libssl.so libssl.so.0.9.7f libssl.so.5 我暈。。估計是因為編譯libcurl的時候沒注意使用靜態(tài)加載,本想拷貝他到目標機,讓程序到當前目錄加載的(默認的/lib /usr/lib都為只讀),可惜依然沒辦法跑起來,隨即修改 LDFLAGS="-static -L/opt/timesys/toolchains/armv5l-linux/lib" 為 LDFLAGS="-static -L/opt/timesys/toolchains/armv5l-linux/armv5l-linux/lib -static -lz -static -lssl" 再試試: |
|