之前的文章說了如何在linux上編譯,最近在Solaris上編譯了一下,32位和64位都通過了。但64位的庫還沒試,不知道用起來會不會出現(xiàn)什么問題。下面先說下我的環(huán)境,和之前的方法一樣,都是設(shè)置好環(huán)境變量
PATH=$PATH:$HOME/bin;export PATHACE_ROOT=/home/vimp/ACE_wrappers;export ACE_ROOTLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ACE_ROOT/ace:$ACE_ROOT/lib:$ACE_ROOT/bin:/lib:/usr/lib:/usr/local/lib;export LD_LIBRARY_PATHPATH=$PATH:$ACE_ROOT/ace:$ACE_ROOT/lib:$ACE_ROOT/bin:/usr/vacpp/bin;export PATH我用的是g++,版本是3.3.1的,沒用SUNC++,水平有限加上機(jī)器環(huán)境不太熟悉。下面為通用步驟:
1. 下載ACE包
下載下來tar.gz包,解開,
gunzip [.gz包]
tar -xvf [tar包名]
操作完后將會在當(dāng)前目錄下有ACE_wrappers目錄。(注:我這里tar時(shí),文件老是出點(diǎn)錯誤,是checksum的錯誤,后來我就在win下解壓了,有壓成.zip的包,傳上去,用gunzip還是g解的我也忘了)
2. 設(shè)置環(huán)境變量
修改登陸腳本,如下所示:
$ vi /etc/profile
# User specific environment and startup programsPATH=$PATH:$HOME/bin;export PATHACE_ROOT=/home/vimp/ACE_wrappers;export ACE_ROOTLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ACE_ROOT/ace:$ACE_ROOT/lib:$ACE_ROOT/bin:/lib:/usr/lib:/usr/local/lib;export LD_LIBRARY_PATHPATH=$PATH:$ACE_ROOT/ace:$ACE_ROOT/lib:$ACE_ROOT/bin:/usr/vacpp/bin;export PATHunset USERNAME具體是什么樣子的忘了,主要就是設(shè)置好環(huán)境變量就是了。
修改后,重,環(huán)境變量設(shè)置好。
3. 修改文件
進(jìn)入$ACE_ROOT/ace/下,修改config.h $vi config.h#include "ace/config_sunos5.9.h"保存退出進(jìn)入$ACE_ROOT/include/makeinclude/下,建立platform_macros.GNU$vi platform_macros.GNUinclude $ACE_ROOT/include/makeinclude/platform_sunos5_g++.GNU保存退出4. 編譯
進(jìn)入$ACE_ROOT/ace下make。等待一會,編譯完后,進(jìn)入lib下,看是不是有.so文件了,成功!
這樣是32位版本,ldd看下.so文件,依賴庫也是32位的庫,file看下也可以看的出來。
64位版本需要修改makefile文件了。在剛才的platform_macros.GNU中包含了platform_sunos5_g++.GNU這個文件,修改這個文件。修改CFLAGS和SOFLAGS,加上-m64編譯選項(xiàng)。
我用的機(jī)器是2個CPU的,所以為了便宜環(huán)境時(shí)的速度,可以make的時(shí)候加選項(xiàng),make -j n , n為CPU個數(shù),-j的意思是同時(shí)并行處理的job數(shù)。
編譯64位的ACE的時(shí)候,會有些類型轉(zhuǎn)換的的警告,不用理會他,可以成功編譯出來.so文件,但具體使用會不會有問題,還要進(jìn)一步試
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/andy6355/archive/2006/11/01/1360491.aspx