背景:項目需要,初期在windows上用的ICE,POCO和protobuf庫移植到arm-linux上去運行。
閑話不說了進入正題:
1. ICE3.3.1
編譯大體過程:
1) 先編譯出IceUtil.so
2) 利用IceUtil.so編譯出ICE的解譯器程式slice2cpp,slice2java等。
3) 用解譯器產生相關的.cpp和.h代碼用來編譯其他庫。
1.1 在linux redhat enterparse6.1 上編譯ICE3.3.1/3.4.2(過程一樣)。
1.1.1 下載ICE3.3.1 和編譯ICE需要的一些庫
ThirdParty-Sources-3.3.1.tar.gz
註:修改相關檔案夾許可權或者用root使用者操作
解壓tar -xvf ./ThirdParty-Sources-3.3.1.tar.gz
1) 安裝mcpp
mkdir /usr/local/src/ICE-3.3.1/
tar -xvf ./mcpp-2.7.2.tar.gz -C/usr/local/src/ICE-3.3.1/
cd /usr/local/src/ICE-3.3.1/mcpp-2.7.2/
./configure --prefix=/usr/local/ICE-3.3.1/mcpp-2.7.2/ CFLAGS=-fPIC -enable-mcpplib -disable-shared
make
make install
make clean
2) 安裝BerkeleyDB
tar -xvf ./db-4.6.21.NC.tar.gz -C/usr/local/src/ICE-3.3.1/
cd /usr/local/src/ICE-3.3.1/db-4.6.21.NC/build_unix/
../dist/configure --prefix=/usr/local/ICE-3.3.1/BerkeleyDB-4.6.21/ -enable-cxx
make
make install
make clean
3) 安裝bzip2
tar -xvf ./bzip2-1.0.5.tar.gz -C/usr/local/src/ICE-3.3.1/
修改Makefile,將PREFIX指向/usr/local/ICE-3.3.1/bzip2-1.0.5
make
make install
make clean
4) 安裝expat
tar -xvf ./expat-2.0.1.tar.gz -C/usr/local/src/ICE-3.3.1/
./configure --prefix=/usr/local/ICE-3.3.1/expat-2.0.1/
make
make install
make clean
5) 安裝openssl
tar -xvf ./openssl-0.9.8g.tar.gz -C/usr/local/src/ICE-3.3.1/
./config --prefix=/usr/local/ICE-3.3.1/openssl-0.9.8g/
make
make install
make clean
6) 安裝Ice
tar -xvf ./Ice-3.3.1.tar.gz -C/usr/local/src/ICE-3.3.1/
修改vi ./cpp/config/Make.rules裡面的一些路徑
prefix ?= /usr/local/ICE-3.3.1/ICE-$(VERSION)
embedded_runpath_prefix ?= /usr/local/ICE-3.3.1/Ice-$(VERSION_MAJOR).$(VERSION_MINOR)
OPTIMIZE = yes #編譯不加-g 最佳化編譯
BZIP2_HOME ?= /usr/local/ICE-3.3.1/bzip2-1.0.5
DB_HOME ?= /usr/local/ICE-3.3.1/BerkeleyDB-4.6.21
EXPAT_HOME ?= /usr/local/ICE-3.3.1/expat-2.0.1
OPENSSL_HOME ?= /usr/local/ICE-3.3.1/openssl-0.9.8g
MCPP_HOME ?= /usr/local/ICE-3.3.1/mcpp-2.7.2
:wq退出vi
cd ./cpp
make
make install
make clean
註:路徑根據自己情況隨意設計,我只是把我的例子寫出來。