首先还是推荐先去看wiki上的文章 http://www.amule.org/wiki/index.php/HowTo_compile_on_Mac (以下简称原文),但是这个文章很久都没有更新了,所以照做肯定没戏,不过借此可以了解其依赖关系等基本信息。
第一步,安装Xcode 3.0,这个在Leopard光盘里面有,也可以从Apple Developer Connection下载安装;
第二步,安装Macports 1.6 for Leopard,安装方法和shell变量设置参见官方guide。其实原文中提到的automake、flex等几个工具都可以直接从tarball编译,但是由于依赖关系比较复杂,所以还是推荐从Macports安装。需要注意的是其中某些lib会在编译过程中进行连接,所以必须编译成为UB代码,这一点只需要在安装时加参数+universal,比如sudo port -v install automake +universal,但不能写成sudo port -v install gettext automake +universal,这样写gettext依然只有i386 arch的代码。按这个方法用macports安装automake, flex, gettext, libpng即可。
ps:原文中说macports中crypto++很古旧,其实已经更新到5.5.2了,呵呵。
第三步,编译安装crypto++。这个东西非常烦人,困惑了很久,等下具体说。下载crypto 5.5.2源代码(官网好像被墙了?从sourceforge上下吧)。crypto++没有configure文件,需要修改GNUmakefile。在第一行CXXFLAGS中增加参数-arch i386 -arch ppc,即改为CXXFLAGS = -DNDEBUG -g -O2 -arch i386 -arch ppc,然后make -f GNUmakefile进行编译(貌似不使用参数f连接时会出现找不到lcryptopp的情况)。接下来sudo make install PREFIX=/usr/local/cryptopp进行安装(这个地方我做了一件比较笨的事情,不单安装在了/usr/local/cryptopp,而且在/usr和SDK的/Developer/SDKs/MacOSX10.5.sdk/usr下面各装了一次,所以最后自己也搞不清楚连接时究竟用了哪一个,也没找到哪里有编译log,还望高手赐教)。
第四步,编译wxMac。首先去官网下载wxMac-2.8.7源代码,解压后在终端执行:
cd wxMac-2.8.7/build
../configure –disable-shared –enable-unicode –enable-debug –enable-debug_gdb –enable-universal_binary
这一步完全按照原文进行。编译完成后不需要install,但是要把amule-cvs目录和wxMac-2.8.7目录放在同一个目录下面。
第五步,编译aMule。在终端执行:
cd amule-cvs
./configure –disable-systray –disable-gtk –enable-embedded_crypto
–with-wx-config=../wxMac-2.8.7/build/wx-config
–enable-cas –enable-webserver –enable-amulecmd
–enable-debug –disable-optimize –with-crypto-prefix=/usr/local/cryptopp
–disable-dependency-tracking
CFLAGS=”-arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk”
CXXFLAGS=”-arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk”
make
如果没什么问题,编译通过之后就基本成功了。
第六步,打包app。在终端中执行./src/utils/scripts/mac_packager,结束后在amule-cvs中应该可以看到最终完成的bundle了,静态链接的程序大概有65MB。。。。
呵呵,本人并非专业人士,缺乏理论素养,花了很长时间才完成。希望大家能指正本文中的错误,本人感激不尽。最后谢谢jjgod大仙,呵呵,也推荐大家去看看jjgod的blog,真的受益非浅。
那个 crypto++,用的是usr/local下面的,其实完全可以–disable-embedded_crypto就把它废掉⋯⋯
不过我没试过真废了crypto后是什么结果⋯⋯