一、在安裝有Linux操做系統的PC上安裝交叉編譯器,筆者使用的是Moxa tool chain for DA66x,(其它的嵌入式Linux系統都是同樣的作法),能夠從
Moxa網站上下載: 二、將ACE程序包下載到Linux PC上,並解壓 三、設置環境變量: A、交叉編譯工具的路徑:export PATH=「/usr/local/xscale_be/bin:$PATH」 B、ACE_ROOT:export ACE_ROOT=「/home/jun/ACE_wrappers」(根據實際路徑設置) 四、將$ACE_ROOT/ace/config-linux.h複製成$ACE_ROOT/ace/config.h cp $ACE_ROOT/ace/config-linux.h $ACE_ROOT/ace/config.h 五、將$ACE_ROOT/include/makeinclude/platform_linux.GNU複製成 $ACE_ROOT/include/makeinclude/platform_macros.GNU並修改 $ACE_ROOT/include/makeinclude/platform_macros.GNU文件: 添加: CC = xscale_be-gcc CXX = xscale_be-g++ 刪除: insure ?= 0 ifeq ($(insure),1) CC = insure CXX = insure else CC ?= gcc CXX ?= g++ endif 六、修改$ACE_ROOT/include/makeinclude/platform_g++_common.GNU文件,註釋第90行:LDFLAGS += -Wl,-E 七、進入$ACE_ROOT,直接輸入make 八、將生成的libACE.so.5.5.6複製到DA66x的CF卡上/mnt/had/lib,並編輯DA662的/etc/profile,在該 文件中添加export LD_LIBRARY_PATH="/mnt/hda/lib: $LD_LIBRARY_PATH " 九、另外,gperf目錄下的測試程序沒法編譯,由於這些測試程序要用的經過。 $(ACE_ROOT)/apps/gperf/src/目錄下的相關源代碼生成的gperf程序去完成下一步動做,而這個程序是利用交叉編譯器生成 的,不能在PC上運行。所以在GNUmakefile裏面的all:後面,咱們要刪除cppinset adainset cinset iinset iinset2 m3inset pinset preinset taoinset tinset這些目標對象。 十、整個編譯過程要30分鐘左右,看機器性能。 插曲:一開始筆者使用的是platform_macosx.GNU,對這個文件作了適當的調整而後命名爲platform_macros.GNU,緣由 是他們很類似。結果一開始編譯還挺順利的,但是沒一會(在編譯ACEXML的時候)就編譯不下去了,暈死了!並且生成的libACE.so庫也有問題!後 來在網上看到其它網友在Linux下編譯ACE,受到啓發,改用platform_linux.GNU,而且直接 添加: CC = xscale_be-gcc CXX = xscale_be-g++