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