緊接上篇:http://blog.csdn.net/jiebaoabcabc/article/details/24466799 《SMTP 0.8.5庫的安裝與移植(for ubuntu and arm)上篇》
喲,大家好,今天繼續上次smtp的移植講解。在上篇中我已經大概介紹了smtp安裝過程,展示了一些可能遇到的問題,今天我們要開始smtp for arm的移植了^ ^,建議大家先看上篇,有了pc上安裝的經驗,再來移植smtp就友善了。
今天我們的目标是smtp for arm測試用用戶端程式來向pc上的postfix伺服器發送郵件。
一、首先介紹一下SMTP(Simple Mail Transfer Protocol)
SMTP (Simple Mail Transfer Protocol)即簡單郵件傳輸協定,它是一組用于由源位址到目的位址傳送郵件的規則,由它來控制信件的中轉方式。是一種TCP協定支援的提供可靠且有效電子郵件傳輸的應用層協定。SMTP 是建立在 TCP上的一種郵件服務,主要用于傳輸系統之間的郵件資訊并提供來信有關的通知。
二、安裝前準備:
1.源碼包下載下傳位址:http://developer.berlios.de/project/showfiles.php?group_id=149
2.我的安裝環境:
UBUNTU12.04
arm-linux-gcc4.3.3
glib2.40.0.tar.xz
libsmtp-0.8.5.tar.bz2
3.glib for arm and pkg-config支援
參考我的另一篇文章:http://blog.csdn.net/jiebaoabcabc/article/details/24439583
由于smtp庫依賴于glib或者說就是建立在glib上的,是以smtp在編譯時,系統也要有glib的庫(交叉編譯時也需要交叉工具鍊編譯出來的glib庫)。
三、開始安裝smtp forarm:
1.解壓縮源碼,并建立安裝路徑,安裝目錄下應該包含bin、include、lib目錄
2.閱讀README和INSTALL:
README:主要介紹0.8.5版本與之前版本相比更加适合嵌入式環境而且移植性有所提高。
INSTALL:簡單介紹安裝過程,重點是測試用testapp.c的使用,這個我會在後面測試時做稍微的修改。
3.跟一般的安裝一樣,開始配置makefile:
先來到smtp for pc的解壓目錄下
執行:CC=arm-linux-gcc./configure --prefix=/usr/local/arm/4.4.3/smtp/ --host=arm-linux
然後跟for pc一樣修改makefile:
修改Makefile:
21 [
CPPFLAGS = `pkg-config --cflags glib-2.0-arm`
CFLAGS = $(CPPFLAGS) -g -O2
LDFLAGS = `pkg-config --libs glib-2.0-arm`
LIBS =
24 ]
修改./smtp/Makefile:
33 [
CFLAGS = -I. -I.. `pkg-config --cflagsglib-2.0-arm` -g -O2 -DUSE_MIME
LDFLAGS = -L. `pkg-config --libs glib-2.0-arm`
34 ]
修改./examples/Makefile:
32 [
CFLAGS = -I. -I../include `pkg-config--cflags glib-2.0-arm` -g -O2
LDFLAGS = -L. -L../smtp -L../mime`pkg-config --libs glib-2.0-arm`
33 ]
40 [
ifeq (yes,yes)
SOURCES=smtpmail.cmultipart.c singlepart.c
OBJS=smtpmail.omultipart.o singlepart.o
APPS=smtpmailmultipart singlepart
LIBS= -lsmtp -lsmtp_mime `pkg-config --libs glib-2.0-arm`
else
SOURCES=smtpmail.c
OBJS=smtpmail.o
APPS=smtpmail
LIBS = -lsmtp `pkg-config --libs glib-2.0-arm`
endif
51 ]
4.make
如果glib for arm部分做的沒問題,編譯就應該不會有問題。
5.makeinstall
這樣smtp for arm庫就安裝完了,下面我們來測試一下。
四、測試smtp for arm
1.環境搭建:
smtp的代碼都需要glib動态庫的支援,是以先要将glib動态庫複制到arm的/lib上
cp -a libglib-2.0* /home/rootfs/lib/ 注意不要拷貝x86的庫到arm上了哦
2.編譯測試代碼
examples/singlepart.c的修改與for x86一樣:
133 +if (libsmtp_connect (server,0,0,mailsession)) 将" container"改成server
儲存好以後重新傳回上一層make一下,然後将singlepart拷貝到arm下
3.運作singlepart
運作前可以通過telnet192.168.0.10 25檢視arm是否可以與pc進行連接配接。
其中192.168.0.10是pc的ip
如果不行,檢視pc上的postfix是否運作正常
然後運作singlepart
From:address輸入192.168.0.232
subjectline随便輸入
mailserver輸入192.168.0.10
to輸入/etc/postfix/main.cf配置中mydestination的其中一個,如localhost
再按一下enter就開始握手然後開始傳輸了
結果可以通過列印看到是否成功,pc上的/var/mail下會有對應使用者的mail檔案。
結果截圖:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CXqp0VZpmSXlldG1WWsxWbhZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jN1YDO1kzMzETNyQDM0EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
4.使用testapp.c運作
首先修改testapp.c,照着singlepart的運作來改,這個我不多說了。
cd到smtp/下編譯testapp.c
arm-linux-gcc testapp.c-I/usr/local/arm/4.4.3/smtp/include -L/usr/local/arm/4.4.3/smtp/lib -lsmtp`pkg-config --cflags glib-2.0-arm` `pkg-config --libs glib-2.0-arm` -o testapp
将testapp拷貝到arm上運作
結果可以通過列印看到是否成功,pc上的/var/mail下會有對應使用者的mail檔案。
至此smtp for arm移植完成^ ^
五、總結:
smtp協定能為arm做很多事咯,移植隻是一小步,後面的功能還需要各位各自努力。看上去postfix貌似也能移植到arm上哎,下次玩玩。
那麼smtp0.8.5庫的安裝和移植就講解到這裡吧 ^ ^ ,米娜桑,下次見咯。