ARM-Linux下交叉编译opessl-1.0.0
??? 我的開(kāi)發(fā)環(huán)境:ARM9開(kāi)發(fā)板 和 嵌入式Linux操作系統(tǒng)。裝有Linux系統(tǒng)(我的是ubuntu9.04)的PC機(jī)一臺(tái)。串口和串口連接線(xiàn)。串口調(diào)試軟件:minicom。交叉編譯工具:arm-unknown-linux-gnu-gcc
??? 下載最新版本的openssl-1.0.0:
???? http://www.openssl.org/source/
????
??? 解壓:$tar -xzvf?? openssl-1.0.0.tart.gz
????????? ? $cd openssl-1.0.0
??????? openssl-1.0.0$ ./config no-asm shared prefix=/home/lanpeng/arm-openssl
? ? 解釋一下這里的參數(shù): config就是配置腳本,這里不多說(shuō)了。no-asm是在交叉編譯過(guò)程中不使用匯編代碼代碼加速編譯過(guò)程.原因是它的匯編代碼是對(duì)arm格式不支持的。我試過(guò)了,如果沒(méi)有這個(gè)參數(shù),你的交叉編譯一定出錯(cuò)。shared生成動(dòng)態(tài)連接庫(kù)。prefix=路徑? 就是你的安裝目錄。安裝完成后在這個(gè)目錄下會(huì)有四個(gè)文件夾:bin lib include ssl。這四個(gè)目錄非常重要,openssl編程就需要這些目錄的配合。
? ? 配置完成后我們還要修改Makefile文件(或許有更好的辦法不用修改Makefile,這里請(qǐng)高手指點(diǎn))。修改如下:
? ? ????
? 62 #CC= gcc
?63 CC = arm-unknown-linux-gnu-gcc
?64 #CFLAG= -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAV??? E_DLFCN_H -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall
?65 CFLAG= -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_N??? O_KRB5 -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall
?66 DEPFLAG= -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MD2 -DOPENSSL_NO_R??? C5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_STORE
?67 PEX_LIBS=
?68 EX_LIBS= -ldl
?69 EXE_EXT=
?70 ARFLAGS=
?71 #AR= ar $(ARFLAGS) r
?72 AR = arm-unknown-linux-gnu-ar $(ARFLAGS) r
?73 RANLIB = arm-unknown-linux-gnu-ranlib
?74 #RANLIB= /usr/bin/ranlib
?75 #NM= nm
?76 NM = arm-unknown-linux-gnu-nm
?77 PERL= /usr/bin/perl
?78 TAR= tar
?79 TARFLAGS= --no-recursion
?80 MAKEDEPPROG= gcc
?81 LIBDIR=lib
? 即使用交叉編譯工具去編譯openssl。
? 修改好了以后執(zhí)行命令:? opensl-1.0.0$ make
? 要編譯5分鐘左右,慢慢等吧。
? 然后在輸入命令:?? opensl-1.0.0$ make install
? 沒(méi)有錯(cuò)誤!恭喜了,安裝成功。
? 接下來(lái)就使用openssl來(lái)編程把。
? 我在網(wǎng)上找了一段程序,openssl棧的編程:myssl.c:
??
?? ? ?
| #include?<stdio.h> |
?? ?這里要用到安裝目錄下的include 和 lib庫(kù).所以我寫(xiě)了一個(gè)Makefile文件來(lái)執(zhí)行它:
| COMPILE := arm-unknown-linux-gnu- CC := $(COMPILE)gcc CFLAGS := -Wall -O2 CFLAGS += -I/home/lanpeng/arm-openssl/include/ LIBS := /home/lanpeng/arm-openssl/lib/libssl.a? /home/lanpeng/arm-openssl/lib/libcrypto.a %.o: %.c ??? $(CC) $(CFLAGS) -c -o $@ $< hello: zhan.o $(LIBS) ??? $(CC) $(CFLAGS) -o $@ zhan.o -L.$(LIBS) clean: ??? rm -fr *.o hello |
???? 在程序目錄下執(zhí)行make命令,編譯通過(guò)!
??? 注意:這里有一個(gè)的問(wèn)題:就是在我的Makefile文件里L(fēng)IBS的定義。它定義了兩個(gè)靜態(tài)庫(kù)文件:libssl,libcrypto.這兩個(gè)庫(kù)文件的順序不可以顛倒。必須先加入libssl庫(kù),再加入libcrypto庫(kù).
??? 把hello文件下載到開(kāi)發(fā)板里,執(zhí)行 ./hello,結(jié)果如下:
student name :? zcp
sutdent age? :? 0
student otherinfo :???? no info
恭喜了,開(kāi)始你的嵌入式openssl開(kāi)發(fā)之旅把!
總結(jié)
以上是生活随笔為你收集整理的ARM-Linux下交叉编译opessl-1.0.0的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 民生女人花信用卡,你对它了解多少?
- 下一篇: Linux网络编程一步一步学-selec