天天看點

SMTP 0.8.5庫的安裝與移植(for ubuntu and arm)下篇

緊接上篇: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檔案。

         結果截圖:

SMTP 0.8.5庫的安裝與移植(for ubuntu and arm)下篇

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庫的安裝和移植就講解到這裡吧 ^ ^ ,米娜桑,下次見咯。

繼續閱讀