在windows下交叉編譯用於vxworks6.6的ACE+TAO
1. 下載安裝ActivePerl,並添加環境變量
C:\Perl\site\bin;C:\Perl\bin;
到PATH中;
以上假如按默認路徑安裝,其實安裝時有提供是否添加環境變量到PATH中,選上即可。
安裝Perl的意圖時ACE+TAO中很多perl腳本,需要perl的支持。
2. 解壓ACE+TAO-2.0a.tar.gz到c盤,假設解壓後路徑爲:C:\ACE_wrappers
cmd打開命令行:
cd C:\ACE_wrappers
MPC\ clone_build_tree.pl default
將會拷貝C:\ACE_wrappers下的文件到C:\ACE_wrappers\build\default下形成build tree,只需在這下面編譯ACE+TAO就行了,建議不要直接在原目錄樹上編譯,還是拷貝一份比較好。
3. 設置環境變量
ACE_ROOT=c:\ACE_wrappers\build\default
TAO_ROOT=%ACE_ROOT%\TAO
添加%ACE_ROOT%\bin;%ACE_ROOT%\lib到PATH中
4. 在%ACE_ROOT%\ace\下創建文件config.h,添加如下內容:
#if defined (sun)
# include "ace/config-sunos5.10.h"
#elif defined (linux)
# include "ace/config-linux.h"
#elif defined (_MSC_VER)
# define ACE_DISABLE_WIN32_ERROR_WINDOWS
# define ACE_DISABLE_WIN32_INCREASE_PRIORITY
# include "ace/config-win32.h"
#elif defined (ACE_VXWORKS)
# include "ace/config-vxworks.h"
#endif
5. 以下windows編譯靜態版的ACE、ace_gperf 和tao_idl,這是在vs2010中完成的,
cd %ACE_ROOT%\TAO
..\bin\mwc.pl -static -type vc10 TAO_ACE.mwc
生成vs2010的解決方案。
用vs2010打開%ACE_ROOT%\TAO\ TAO_ACE.sln,將會加載所有項目,選擇Release編譯模式,但只需編譯TAO_IDL_EXE項目,編譯其時回編譯相關的項目,總共5個。
編譯完成後會在%ACE_ROOT%\bin中生成ace_gperf.exe,tao_idl.exe,在%ACE_ROOT%\lib\中生成相關庫。
6. 在%ACE_ROOT%\include\makeinclude中創建platform_macros.GNU,在文件添加:
debug=0
optimize=1
static_libs_only=1
CPU=PENTIUM3
TOOL_FAMILY=gnu
include $(ACE_ROOT)/include/makeinclude/platform_vxworks.GNU
這裏只編譯生成靜態庫,CPU根據你板子的類型來定,你也可以設置TOOL_FAMILY=diab,看你使用workbench時用使用的編譯器,這裏使用gnu的。RTP默認爲1,設置爲0,爲kernel mode applications進行編譯。
7. 交叉編譯ACE+TAO
打開Visual Studio 命令提示行:
C:\WindRiver\wrenv.exe -p vxworks-6.6
以上命令將打開VxWorks development shell,這樣就在命令行中設置了相關的環境變量以用於交叉編譯(前面生成的tao_idl.exe,ace_gperf.exe將發揮作用),否則你的自己手動設置N多環境變量。
繼續:
cd %ACE_ROOT%
mwc.pl -type gnuace 一次性生成所有項目的makefiles文件
make
cd %TAO_ROOT% (這一步好像也不需要了,上面的步驟好像也將tao編譯了,我有點忘了,執行一遍無礙)
make
如果採用mwc.pl -type gnuace –recurse生成makefiles文件,你需要自己cd到各個相關目錄(如ace,TAO\tao,TAO\orbsvcs等各種你要用的組件目錄)執行make指令。
至此編譯完成。
會在%ACE_ROOT%\lib下生成很多*.a文件,並且所有的相關例子也將編譯生成目標文件,可以查看%TAO_ROOT%下的例子,會看到*.vxe的文件,是供在vxworks下使用的執行文件。