1. 程式人生 > >Mac 上面編譯POCO C++庫

Mac 上面編譯POCO C++庫

POCO C++是一個開源的C++庫,這個庫的功能還挺多,包括socket,http,加密,xml解析等。我們遊戲裡面用到這個庫,但沒有在mac虛擬機器中編譯過所以需要在mac下重新編譯一下這個庫。


1.我首先到http://pocoproject.org/下載原始碼

因為我是需要在Mac上編譯,所以我下Linux版


2.把解壓後的資料夾拖到桌面,開啟終端,輸入以後命令,跳轉到Poco資料夾

3.引數解釋:  --omit排除(不編譯的),--prefix安裝路徑

> sudo ./configure --omit=Data/ODBC,Data/SQLite --prefix=/usr  --static --shared

> sudo make -s install

PS:

如果沒有  --static --shared 預設為 shared 不編譯靜態庫

如果在x64的系統下使用到靜態庫 .記得一定要加-fPIC,動態庫不用.

>./configure --omit=Data/ODBC,Data/SQLite --prefix=/usr --cflags=-fPIC --static

>make -s install

否則會出現這類的錯誤:

/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../
....
can not be used when making a shared object; recompile with -fPIC

4.編譯完後:


我想要的就是這幾個.a檔案,這個和警告中相吻合。

如果你需要Iphone版本的編譯,那麼:

需要下載libpoco-all,解壓後通過命令列進入poco根目錄。輸入以下命令編譯靜態庫

sudo ./configure --config=iPhone --no-tests --no-samples --omit=Data/ODBC,Data/MySQL
sudo make IPHONE_SDK_VERSION_MIN=3.0 POCO_TARGET_OSARCH=armv6 -s -j4 
sudo make IPHONE_SDK_VERSION_MIN=3.2 POCO_TARGET_OSARCH=armv7 -s -j4 

sudo ./configure --config=iPhoneSimulator --no-tests --no-samples --omit=Data/ODBC,Data/MySQL
sudo make -s -j4

特別注意

1)如果編譯不過,一般是找不到IphoneSDK路徑,可開啟Build/Config/Iphone,修改路徑
TOOL_PREFIX  ?= /Applications/Xcode.app/Contents/Developer/Platforms/$(IPHONE_SDK).platform/Developer/usr/bin

 2)如果嵌入工程編譯出現i386錯誤,就需要編譯i386平臺靜態庫(針對模擬器)

sudo ./configure --config=iPhoneSimulator --no-tests --no-samples --omit=Data/ODBC,Data/MySQL
sudo POCO_TARGET_OSARCH=i386 make -s -j4