今天一整天都在Mac上編譯ACE,就一種感覺,很混亂。。。到現在,總算有些理解了~
整體來說,在Mac上編譯ACE并不難,網上的資料也很多,麻煩的如何能讓xcode使用ACE,因為xcode支持平臺的問題,會導致鏈接時出錯。比如,按照網上常規的方法編譯的ACE,在xcode中使用debug x86-64或者i386等都沒有問題,但是如果換成release,那就會鏈接失敗。這里總結一下我的經歷,不敢說一定正確,至少我現在可以在xcode下編譯,調試ACE程序了,雖然還有很多的warnning,但也不管了,能跑起來,我就很感激了。。。不扯了~
編譯ACE網上的過程如下 :
1. 在./ace下添加config.h文件,內容如下:
#include "config-macosx-snowleopard.h"
2. 在./include /makeinclude下添加platform_macros.GNU文件,內容如下:
debug = 0
shared_libs = 0
static_libs = 1
include ${ACE_ROOT}/include/makeinclude/platform_macosx_snowleopard.GNU
不多解釋,很好理解。經過上面的過程,再編譯ACE基本沒有問題了,使用xcode的debug模式編譯程序也ok,但release是不行的,表現的是鏈接錯誤,提示的是‘file was built for unsupported file format which is not the architecture being linked (i386)’類似的信息。此時,需要修改platform_macros.GNU文件,添加如下內容,就可以了。
buildbits = universal
這個配置的意義,請查看platform_macosx_snowleopard.GNU文件,我理解應該是用于定義平臺的。
至此,使用i386,x86-64,ppc等配置都可以編譯成功了,我也可以瞑目去安心寫代碼了~是的,鏈接時還有很多warnings,不管了,反正我是沒辦法去掉了,各位有啥好主意,請告訴我。。。