首先准备文件wxGTK-2.8.8.tar.gz cryptopp552.zip flex-2.5.35.tar.bz2 aMule-2.2.1.tar.bz2
1、安装wxGTK 2.8.8
#tar xvjf wxGTK-2.8.8.tar.gz
#cd wxGTK-2.8.8
#./configure --prefix=/usr/local/wxGTK --with-gtk --enable-unicode --enable-optimise
#make
#make install
#ldconfig
2、安装crypto++ 5.5.2
#mkdir -v cryptopp-build
#cp cryptopp552.zip cryptopp-build
#cd cryptopp-build
#unzip cryptopp552.zip
#make
#make install PREFIX=/usr/local/cryptopp
3、升级flex 2.5.35(如果你的版本是flex 2.5.4为了你可以能成功编译aMule 2.2.1您需要进行此项升级操作)
需要升级flex的原因是在运行aMule中的configure命令出现下面的提示:
checking for flex... flex
checking for extended flex capabilities... no
configure: Your flex version doesn't support --header-file flag. This is not critical, but an upgrade is recommended
#tar xvjf flex-2.5.35.tar.bz2
#cd flex-2.5.35
#./configure --prefix=/usr/local/flex
#make
#make check(测试)
#make install
#ln -sv libfl.a /usr/local/flex/lib/libl.a
创建一个lex的命令
cat > /usr/local/flex/bin/lex << "EOF"
#!/bin/sh
# Begin /usr/local/flex/bin/lex
exec /usr/local/flex/bin/flex -l "$@"
# End /usr/local/flex/bin/lex
EOF
chmod -v 755 /usr/local/flex/bin/lex
4、安装aMule 2.2.1
#tar xvjf aMule-2.2.1.tar.bz2
#cd aMule-2.2.1
#export PATH=/usr/local/flex/bin:$PATH
#./configure --disable-debug --enable-optimize --with-wx-prefix=/usr/local/wxGTK --with-crypto-prefix=/usr/local/cryptopp
#make
注意,如果发生编译错误你可能需要修改下面这些文件:
src/libs/common/Format.cpp
src/libs/common/StringFunctions.cpp
src/libs/common/FileFunctions.cpp
src/MD4Hash.h
需要增加一行:#include <cctype> (解决没有声明isalpha,isalnum,isspace,isdigit,isprint,toupper等函数)
下面文件的修改,只是记录在flex 2.5.4版本的情况下当生成Scanner.cpp文件并且编译它是出现了下面的错误提示:
Compiling Scanner.cpp
./Scanner.l: In function 'void LexFree()':
./Scanner.l:191: error: 'yylex_destroy' was not declared in this scope
make[3]: *** [libmuleappcore_a-Scanner.o] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
此时为了解决这个问题修改了下面的文件(
src/Scanner.l文件
需要增加一行:#include "Scanner.h.in"(解决没有声明yylex_destroy,如果是flex 2.5.4版本此项修改在链接aMule时仍然会出错,建议升级到flex 2.5.35,升级方法参见文章第3小节)
如果采用flex 2.5.4版本,并且按照上面的修改Scanner.l文件,仍然会产生下面的编译错误信息:Linking amule
./libmuleappcore.a(libmuleappcore_a-Scanner.o): In function `LexFree()':
/root/aMule/aMule-2.2.1/src/./Scanner.l:191: undefined reference to `yylex_destroy()'
collect2: ld returned 1 exit status
make[3]: *** [amule] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
所以关于Scanner.l文件的编译的解决办法是:不用修改文件,但是需要升级flex!
#make
#make install
5、调整wxGTK 共享库
#ln -sv /usr/local/wxGTK/lib/libwx_baseu-2.8.so.0 /usr/lib/libwx_baseu-2.8.so.0
#ln -sv /usr/local/wxGTK/lib/libwx_baseu-2.8.so.0.5.0 /usr/lib/libwx_baseu-2.8.so.0.5.0
#ln -sv /usr/local/wxGTK/lib/libwx_baseu_net-2.8.so.0 /usr/lib/libwx_baseu_net-2.8.so.0
#ln -sv /usr/local/wxGTK/lib/libwx_baseu_net-2.8.so.0.5.0 /usr/lib/libwx_baseu_net-2.8.so.0.5.0
#ln -sv /usr/local/wxGTK/lib/libwx_baseu_xml-2.8.so.0 /usr/lib/libwx_baseu_xml-2.8.so.0
#ln -sv /usr/local/wxGTK/lib/libwx_baseu_xml-2.8.so.0.5.0 /usr/lib/libwx_baseu_xml-2.8.so.0.5.0
#ln -sv /usr/local/wxGTK/lib/libwx_gtk2u_adv-2.8.so.0 /usr/lib/libwx_gtk2u_adv-2.8.so.0
#ln -sv /usr/local/wxGTK/lib/libwx_gtk2u_adv-2.8.so.0.5.0 /usr/lib/libwx_gtk2u_adv-2.8.so.0.5.0
#ln -sv /usr/local/wxGTK/lib/libwx_gtk2u_aui-2.8.so.0 /usr/lib/libwx_gtk2u_aui-2.8.so.0
#ln -sv /usr/local/wxGTK/lib/libwx_gtk2u_aui-2.8.so.0.5.0 /usr/lib/libwx_gtk2u_aui-2.8.so.0.5.0
#ln -sv /usr/local/wxGTK/lib/libwx_gtk2u_core-2.8.so.0 /usr/lib/libwx_gtk2u_core-2.8.so.0
#ln -sv /usr/local/wxGTK/lib/libwx_gtk2u_core-2.8.so.0.5.0 /usr/lib/libwx_gtk2u_core-2.8.so.0.5.0
#ln -sv /usr/local/wxGTK/lib/libwx_gtk2u_html-2.8.so.0 /usr/lib/libwx_gtk2u_html-2.8.so.0
#ln -sv /usr/local/wxGTK/lib/libwx_gtk2u_html-2.8.so.0.5.0 /usr/lib/libwx_gtk2u_html-2.8.so.0.5.0
#ln -sv /usr/local/wxGTK/lib/libwx_gtk2u_qa-2.8.so.0 /usr/lib/libwx_gtk2u_qa-2.8.so.0
#ln -sv /usr/local/wxGTK/lib/libwx_gtk2u_qa-2.8.so.0.5.0 /usr/lib/libwx_gtk2u_qa-2.8.so.0.5.0
#ln -sv /usr/local/wxGTK/lib/libwx_gtk2u_richtext-2.8.so.0 /usr/lib/libwx_gtk2u_richtext-2.8.so.0
#ln -sv /usr/local/wxGTK/lib/libwx_gtk2u_richtext-2.8.so.0.5.0 /usr/lib/libwx_gtk2u_richtext-2.8.so.0.5.0
#ln -sv /usr/local/wxGTK/lib/libwx_gtk2u_xrc-2.8.so.0 /usr/lib/libwx_gtk2u_xrc-2.8.so.0
#ln -sv /usr/local/wxGTK/lib/libwx_gtk2u_xrc-2.8.so.0.5.0 /usr/lib/libwx_gtk2u_xrc-2.8.so.0.5.0
6、运行aMule
#/usr/local/bin/amule或者amule