ARM-Linux下交叉编译opessl-1.0.0
??? 我的開發(fā)環(huán)境:ARM9開發(fā)板 和 嵌入式Linux操作系統(tǒng)。裝有Linux系統(tǒng)(我的是ubuntu9.04)的PC機(jī)一臺(tái)。串口和串口連接線。串口調(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就是配置腳本,這里不多說了。no-asm是在交叉編譯過程中不使用匯編代碼代碼加速編譯過程.原因是它的匯編代碼是對(duì)arm格式不支持的。我試過了,如果沒有這個(gè)參數(shù),你的交叉編譯一定出錯(cuò)。shared生成動(dòng)態(tài)連接庫。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
? 沒有錯(cuò)誤!恭喜了,安裝成功。
? 接下來就使用openssl來編程把。
? 我在網(wǎng)上找了一段程序,openssl棧的編程:myssl.c:
??
?? ? ?
| #include?<stdio.h> |
?? ?這里要用到安裝目錄下的include 和 lib庫.所以我寫了一個(gè)Makefile文件來執(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命令,編譯通過!
??? 注意:這里有一個(gè)的問題:就是在我的Makefile文件里L(fēng)IBS的定義。它定義了兩個(gè)靜態(tài)庫文件:libssl,libcrypto.這兩個(gè)庫文件的順序不可以顛倒。必須先加入libssl庫,再加入libcrypto庫.
??? 把hello文件下載到開發(fā)板里,執(zhí)行 ./hello,結(jié)果如下:
student name :? zcp
sutdent age? :? 0
student otherinfo :???? no info
恭喜了,開始你的嵌入式openssl開發(fā)之旅把!
總結(jié)
以上是生活随笔為你收集整理的ARM-Linux下交叉编译opessl-1.0.0的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 民生女人花信用卡,你对它了解多少?
- 下一篇: 现在买国债好还是大额存款好?哪个更划算