存档

2008年3月 的存档

新装 Leopard 安装开发环境全记录

2008年3月16日 4 条评论

前期工作

安装光盘里的 Xcode,或者下载 iPhone SDK,2.1G,包括了最新的 Xcode 和 iPhone SDK。

安装好后会有 apache-2.2.6 / php-5.2.5 / ruby-1.8.6 / rails-1.2.6 / python-2.5.1 / java-1.5.0_13 / sqlite-3.4.0 …… gcc 会有2个版本:4.0.14.2.1,默认 /usr/bin/gcc 软连到 gcc-4.0,我们先让默认的 gcc 改用 4.2(2007年1月就 release 了,Changelog

cd /usr/bin
sudo unlink gcc
sudo ln -s gcc-4.2 gcc

设置全局编译参数,编辑 /etc/profile,加上下面的全局变量,保存后重启终端

export MACOSX_DEPLOYMENT_TARGET=10.5
export ARCHFLAGS='-arch x86_64'
export CFLAGS='-arch x86_64 -O3 -pipe'
export CXXFLAGS=$CFLAGS
export LDFLAGS='-arch x86_64 -bind_at_load'

如果需要编译兼容 i386、ppc、ppc64 版本的(编译出来的文件会增大不少),只要加上相应的 -arch 即可

export CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -O3 -pipe"
export CXXFLAGS=$CFLAGS
export LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load"

如果需要编译针对 CPU 优化的,Apple 全系列已经升级到 Intel Core Duo,所以可以加上以下参数

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe"
CXXFLAGS="${CFLAGS}"

-O 使用 O3,其他详见 http://www.gentoo-wiki.com/Safe_Cflags

因此我自己编译的最终参数是

export MACOSX_DEPLOYMENT_TARGET=10.5
export ARCHFLAGS='-arch x86_64'
export CFLAGS='-arch x86_64 -march=nocona -pipe -O3 -pipe'
export CXXFLAGS=$CFLAGS
export LDFLAGS='-arch x86_64 -bind_at_load'

Java

虽然 Apple 总算在 2008年2月 放出了 JDK6 Preview,但是问题还是非常多。我们还是用 BSD 的一个移植版本 Soylatte,直接下载 64-bit JDK for Mac OS X 10.5: soylatte16-amd64-1.0.2.tar.bz2 (Username: 'jrl',Password: 'I am a Licensee in good standing')
解压后放到 /usr/local/soylatte16-amd64,软连 /usr/local/java 到这个目录:

cd /usr/local; sudo ln -s soylatte16-amd64 java
cd /System/Library/Frameworks/JavaVM.framework/Versions/; sudo mkdir soylatte16-amd64
cd soylatte16-amd64; sudo ln -s /usr/local/java Home; sudo ln -s ./Home/bin ./Commands
cd ../A; sudo mv Commands Commands.bak; sudo ln -s ../CurrentJDK/Commands ./
cd ..; sudo unlink CurrentJDK; sudo ln -s soylatte16-amd64 CurrentJDK
java -version

显示如下,Java 就算搞定了

java version "1.6.0_03-p3"
Java(TM) SE Runtime Environment (build 1.6.0_03-p3-landonf_03_feb_2008_01_32-b00)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_03-p3-landonf_03_feb_2008_01_32-b00, mixed mode)

基本库和命令

libtool

curl http://ftp.gnu.org/gnu/libtool/libtool-1.5.26.tar.gz > libtool-1.5.26.tar.gz
tar xzf libtool-1.5.26.tar.gz
cd libtool-1.5.26
./configure
make
sudo make install

zlib

curl http://www.zlib.net/zlib-1.2.3.tar.gz > zlib-1.2.3.tar.gz
tar xzf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make
sudo make install

openssl/libssl

curl http://www.openssl.org/source/openssl-0.9.8g.tar.gz > openssl-0.9.8g.tar.gz
tar xzf openssl-0.9.8g.tar.gz
cd openssl-0.9.8g
./config --prefix=/usr/local --openssldir=/openssl threads zlib-dynamic
vi Makefile
# OPTIONS 里去掉 no-sse2 来开启 CPU 的 SSE2 指令集支持
# CFLAG 里 -arch i386 改为 -arch x86_64
# SHARED_LDFLAGS 同上
make
sudo make install
cd /usr/local/bin
sudo ln -s ../openssl/bin/* ./

wget

curl http://ftp.gnu.org/gnu/wget/wget-1.11.tar.bz2 > wget-1.11.tar.bz2
tar xjf wget-1.11.tar.bz2
cd wget-1.11.tar.bz2
./configure --with-libssl-prefix=/usr/local/openssl
make
sudo make install

libpng

wget http://downloads.sourceforge.net/libpng/lpng1225.tar.bz2 -O libpng-1.2.25.tar.bz2
tar xjf libpng-1.2.25.tar.bz2
cd libpng-1.2.25
./configure
make
sudo make install

libjpeg

wget http://freshmeat.net/redir/libjpeg/5665/url_tgz/jpegsrc.v6b.tar.gz
tar xzf jpegsrc.v6b.tar.gz
cd jpeg-6b
cp /usr/share/libtool/config.sub .
cp /usr/share/libtool/config.guess .
./configure --enable-shared --enable-static
make
sudo mkdir -p /usr/local/man/man1
sudo make install -lib

freetype

wget http://download.savannah.gnu.org/releases/freetype/freetype-2.3.5.tar.gz
tar xzf freetype-2.3.5.tar.gz
cd freetype-2.3.5
./configure
make
sudo make install

fontconfig

wget http://fontconfig.org/release/fontconfig-2.5.91.tar.gz
tar xzf fontconfig-2.5.91.tar.gz
cd fontconfig-2.5.91
./configure --prefix=/usr/local --with-zlib --with-jpeg --with-png --with-freetype --disable-dependency-tracking
make
sudo make install

gd2

wget http://www.libgd.org/releases/gd-2.0.35.tar.bz2
tar xjf gd-2.0.35.tar.bz2
cd gd-2.0.35
./configure --with-fontconfig=/usr/local/bin --disable-dependency-tracking
make
sudo make install

ImageMagick

wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.3.9-7.tar.bz2
tar xjf ImageMagick-6.3.9-7.tar.bz2
cd ImageMagick-6.3.9
./configure --with-fontconfig
make
sudo make install

mysql

wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.51a.tar.gz/from/http://mirror.services.wisc.edu/mysql/
tar xzf mysql-5.0.51a.tar.gz
cd mysql-5.0.51a
./configure --with-mysql-user=mysql --with-mysql-group=mysql --with-innodb --with-archive-storage-engine --with-ndbcluster --with-zlib-dir=/usr/local --with-pthread --with-extra-charsets=utf8 --disable-dependency-tracking
make
sudo make install

neon

wget http://www.webdav.org/neon/neon-0.25.5.tar.gz
tar xzf neon-0.25.5.tar.gz
cd neon-0.25.5
./configure --with-ssl=openssl
make
sudo make install

Berkeley DB

# 为了让 subversion-1.4.6 使用,只能用 db-4.4 版本的
wget http://download.oracle.com/berkeley-db/db-4.4.20.tar.gz
tar xzf db-4.4.20.tar.gz
cd db-4.4.20/build_unix
make
sudo make install
cd /usr/local/; sudo ln -s BerkeleyDB.4.4 bdb

subversion

wget http://apache.mirror.phpchina.com/httpd/httpd-2.2.8.tar.bz2
tar xjf httpd-2.2.8.tar.bz2
wget http://subversion.tigris.org/downloads/subversion-1.4.6.tar.bz2
tar xjf subversion-1.4.6.tar.bz2
cd subversion-1.4.6
cp -r ../httpd-2.2.8/srclib/apr* ./
./configure --with-apxs=/usr/sbin/apxs --with-berkeley-db=/usr/local/bdb --with-ssl
make
sudo make install

libevent

wget http://www.monkey.org/~provos/libevent-1.4.2-rc.tar.gz
tar xzf libevent-1.4.2-rc.tar.gz
cd libevent-1.4.2-rc
./configure
make
sudo make install

memcached

wget http://www.danga.com/memcached/dist/memcached-1.2.5.tar.gz
tar xzf memcached-1.2.5.tar.gz
cd memcached-1.2.5
./configure
make
sudo make install

pcre

wget http://nchc.dl.sourceforge.net/sourceforge/pcre/pcre-7.6.tar.bz2
tar xjf pcre-7.6.tar.bz2
cd pcre-7.6
./configure --enable-utf8
make
sudo make install

pkg-config

wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz
tar xzf pkg-config-0.23.tar.gz
cd pkg-config-0.23
make
sudo make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

libxml2

wget ftp://xmlsoft.org/libxml2/libxml2-2.6.31.tar.gz
tar xzf libxml2-2.6.31.tar.gz
cd libxml2-2.6.31

lighttpd

wget http://www.lighttpd.net/download/lighttpd-1.4.19.tar.bz2
tar xjf lighttpd-1.4.19.tar.bz2
cd lighttpd-1.4.19
./configure --with-openssl --with-zlib --without-bzip2 --with-pcre  --with-gdbm --with-memcache --with-ldap
make
sudo make install

好像大功告成了,还缺啥嘛?

分类: MacosX 标签:

iphone 1.1.3/1.1.4 完美破解指南

2008年3月15日 没有评论

首先用itunes将iphone升级至1.1.3/1.1.4
然后运行ziphone激活,破解,解锁……
安装openssh
root登陆,密码:alpine
安全起见 #chmod -x /usr/bin/passwd
这里生成密码,salt为/s,用它替换root密码(/etc/master.passwd)
然后移动 /Application /Library 到第二分区

分类: Bsd, MacosX, shell, Unix 标签:

关羽、张飞的武功的来历

2008年3月14日 3 条评论

看三国最让人不解的是那些超一流武将从一登场就有超一流的武功,至于这些武功是怎么来的,罗老先生却惜墨如金,不像金庸的人物,武功都是一天天炼出来的。即使如全庸金康之流,笔下人物也还能喝点蛇血什么的,内功一下暴涨60年,总算有个交待。

三国武将的武功自然不是喝蛇血喝出来的,那是不是一天天炼出来的呢?武将之中,张飞关羽的早期经历写的稍微多一点,我们就以这哥俩为例作一分析。

张飞简历:“某姓张,名飞,字翼德。世居涿郡,颇有庄田,卖酒屠猪,专好结交天下豪杰。恰才见公看榜而叹,故此相问。”

关羽简历:“吾姓关,名羽,字长生,后改云长,河东解良人也。因本处势豪,倚势凌人,被吾杀了;逃难江湖,五六年矣。今闻此处招军破贼,特来应募。”

两位都没有提自己的武功,连“自幼习武”这句都没说。更重要的是随后的情节。刘关张决定起兵后,“云长造青龙偃月刀,又名”冷艳锯“,重八十二斤。张飞造丈八点钢矛。”你看,在这之前,两位连兵器都没有。关羽还好说,毕竟扛着八十二斤的大刀逃难有点困难。张飞就不该了,有钱有房,要是练武,不至于连一杆像样的矛都造不起。

可见他们平时并不练武。

那关羽张飞的武功到底是怎么来的呢?

他们的武功来自他们的职业!

据北京体育大学武术学院的网站,“马克思主义认为,人类的生产活动是最基本的实践活动,是决定其他一切活动的东西。武术的产生,从来就是有生产活动决定的。”

关羽张飞也不能有例外。

汉末,武术还没有系统化,不具备通过向师傅学习成为武林高手的条件。要想成为高手,一要有天生体格,二要悟性高,能从生产活动中领悟攻防技术。以此为指导,我们来分析张飞关羽的武功与职业的关系。

张飞的主要职业是杀猪。杀猪要用杀猪刀。和张飞的兵器不同,但技术特点一致。杀猪时不是用杀猪刀砍,而是捅。所以本质上杀猪刀不是刀,而是和矛类似。猪杀死后要去毛,去毛前要给猪充气,使皮肤绷紧。通常做法是用铁钎从后啼一直捅到腹部,然后拔出铁钎,往腹部充气。张飞没有打气筒,只能用嘴吹。铁钎就是小号的矛,所以张飞自然选矛作武器。

另外,长期给猪吹气,张飞练就了巨大的肺活量,才能在长板坡前一声吼,吓退曹操百万兵。

三国演义中没有提关羽的职业,但大家都知道,关羽在逃亡途中卖过枣。卖了五六年的枣,怎么说也是一种职业了。关羽不擅生意,买不出好价钱,但仍能维持生计,说明其进货渠道不一般。如果正常付款进货,本钱早就陪光了。关羽有案在身,不大可能去抢枣。再说,要抢也应该去抢钱。关羽只能自己去枣园打枣。枣园是地主豪强的,打他的枣就是斗地主,不用付钱,心安理得。为了少惹麻烦,关羽总是穿一身绿,见有人来,便爬到枣树上躲起来。一身绿衣,一张枣红脸,藏在枣树上谁也别想看着。

想必关羽不会爱惜枣树,只顾拿大竹竿一通猛打。上高中时半夜拿大竹竿偷过学校的柿子,深知在枝叶中挥动竹竿需要多大的力气。关羽如此打了五六年,练就无穷臂力。从技术特点看,挥动竹竿和挥动大刀完全相同。所以关羽选择了八十二斤的大刀。

打枣成就了关羽的武功,也造成关羽武功的严重缺陷。

关羽曾和赵云在牛头山打过一仗。这场战斗发生在一条山道上,山道两旁全是树。

“关羽奋然上马,倒提青龙刀,凤目圆睁,蚕眉直竖,直冲卧牛山。遍山树枝如波开浪裂,关公径奔一白杨树。赵云见关羽不来斗将,却入无人之境,方欲问时,关羽赤兔马快,早到树前,手起一刀,将白杨树折做两段。”

关羽的武功源自打枣。在冲锋时精神高度集中,道旁的树木钩起了本能反应,挥刀直奔树木而去,大大出了一回洋相。

关羽也因此弱点被擒,丢了性命。

关羽冲出麦城,沿一条山路逃跑,不想赤兔马被绊倒,关羽落马被马忠所擒。关羽即使落马,但功夫仍在,马忠乃无名之辈,如何擒得关羽?想马超也曾步战,杀得韩遂及手下五将血肉横飞。关羽虽疲惫,对付一个马忠理应绰绰有余。怎奈又是山路,山路两旁又是树木。关羽举刀欲战,却见两旁树木众多,一时不知该砍哪棵。犹豫半分钟,早被马忠绑定。

总结:通过分析关羽张飞的武功特点及典型战例,我们得出结论,关羽张飞的武功源自他们的职业。我们相信该结论可推广到所有三国武将。根据此结论,我们可以分析各武将的弱点,从而设计合理战术,轻松打败他们。

分类: 8diagrams 标签:

交叉编译jpeg库的问题

2008年3月11日 没有评论
./configure --enable-shared --enable-static

加了 --enable-shared 或者 --enable-statics 就会报

ltconfig: cannot guess host type; you must specify one

方法是安装最新版的 libtool 然后

cp /usr/share/libtool/config.sub . 
cp /usr/share/libtool/config.guess . 
./configure --enable-shared --enable-static 
make; make install
分类: bash 标签: