ARM-Linux下交叉编译opessl-1.0.0
??? 我的開發環境:ARM9開發板 和 嵌入式Linux操作系統。裝有Linux系統(我的是ubuntu9.04)的PC機一臺。串口和串口連接線。串口調試軟件: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
? ? 解釋一下這里的參數: config就是配置腳本,這里不多說了。no-asm是在交叉編譯過程中不使用匯編代碼代碼加速編譯過程.原因是它的匯編代碼是對arm格式不支持的。我試過了,如果沒有這個參數,你的交叉編譯一定出錯。shared生成動態連接庫。prefix=路徑? 就是你的安裝目錄。安裝完成后在這個目錄下會有四個文件夾:bin lib include ssl。這四個目錄非常重要,openssl編程就需要這些目錄的配合。
? ? 配置完成后我們還要修改Makefile文件(或許有更好的辦法不用修改Makefile,這里請高手指點)。修改如下:
? ? ????
? 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。
? 修改好了以后執行命令:? opensl-1.0.0$ make
? 要編譯5分鐘左右,慢慢等吧。
? 然后在輸入命令:?? opensl-1.0.0$ make install
? 沒有錯誤!恭喜了,安裝成功。
? 接下來就使用openssl來編程把。
? 我在網上找了一段程序,openssl棧的編程:myssl.c:
??
?? ? ?
|  #include?<stdio.h>     | 
?? ?這里要用到安裝目錄下的include 和 lib庫.所以我寫了一個Makefile文件來執行它:
| 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 | 
???? 在程序目錄下執行make命令,編譯通過!
??? 注意:這里有一個的問題:就是在我的Makefile文件里LIBS的定義。它定義了兩個靜態庫文件:libssl,libcrypto.這兩個庫文件的順序不可以顛倒。必須先加入libssl庫,再加入libcrypto庫.
??? 把hello文件下載到開發板里,執行 ./hello,結果如下:
student name :? zcp
sutdent age? :? 0
student otherinfo :???? no info
恭喜了,開始你的嵌入式openssl開發之旅把!
總結
以上是生活随笔為你收集整理的ARM-Linux下交叉编译opessl-1.0.0的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 民生女人花信用卡,你对它了解多少?
- 下一篇: 现在买国债好还是大额存款好?哪个更划算
