之前的文章說(shuō)了如何在linux上編譯,最近在Solaris上編譯了一下,32位和64位都通過(guò)了。但64位的庫(kù)還沒(méi)試,不知道用起來(lái)會(huì)不會(huì)出現(xiàn)什么問(wèn)題。下面先說(shuō)下我的環(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的,沒(méi)用SUNC++,水平有限加上機(jī)器環(huán)境不太熟悉。下面為通用步驟:
1. 下載ACE包
下載下來(lái)tar.gz包,解開,
gunzip [.gz包]
tar -xvf [tar包名]
操作完后將會(huì)在當(dāng)前目錄下有ACE_wrappers目錄。(注:我這里tar時(shí),文件老是出點(diǎn)錯(cuò)誤,是checksum的錯(cuò)誤,后來(lái)我就在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。等待一會(huì),編譯完后,進(jìn)入lib下,看是不是有.so文件了,成功!
這樣是32位版本,ldd看下.so文件,依賴庫(kù)也是32位的庫(kù),file看下也可以看的出來(lái)。
64位版本需要修改makefile文件了。在剛才的platform_macros.GNU中包含了platform_sunos5_g++.GNU這個(gè)文件,修改這個(gè)文件。修改CFLAGS和SOFLAGS,加上-m64編譯選項(xiàng)。
我用的機(jī)器是2個(gè)CPU的,所以為了便宜環(huán)境時(shí)的速度,可以make的時(shí)候加選項(xiàng),make -j n , n為CPU個(gè)數(shù),-j的意思是同時(shí)并行處理的job數(shù)。
編譯64位的ACE的時(shí)候,會(huì)有些類型轉(zhuǎn)換的的警告,不用理會(huì)他,可以成功編譯出來(lái).so文件,但具體使用會(huì)不會(huì)有問(wèn)題,還要進(jìn)一步試
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/andy6355/archive/2006/11/01/1360491.aspx