<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Land of MrSeacow</title>
	<atom:link href="http://blog.mrseacow.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mrseacow.org</link>
	<description>一只笨海牛的陆地生活</description>
	<lastBuildDate>Sun, 15 May 2011 15:37:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mac OS X下编译Android源码</title>
		<link>http://blog.mrseacow.org/2011-04/mac-os-x%e4%b8%8b%e7%bc%96%e8%af%91android%e6%ba%90%e7%a0%81/</link>
		<comments>http://blog.mrseacow.org/2011-04/mac-os-x%e4%b8%8b%e7%bc%96%e8%af%91android%e6%ba%90%e7%a0%81/#comments</comments>
		<pubDate>Sat, 23 Apr 2011 00:38:51 +0000</pubDate>
		<dc:creator>mrseacow</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Android内核]]></category>
		<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://blog.mrseacow.org/?p=97</guid>
		<description><![CDATA[不得不说在Mac下开发Android程序很蛋疼 ——那么就更蛋疼一点吧，少年！来编译Android源码⋯⋯ 在*nix甚至win下这都是非常简单的事情，但目前手边上只有iMac能用，只好移到Mac OS X来干了。 其实吧，这种事在哪里做都一样，只是前戏的步骤略微有点不同罢了⋯⋯（呃，又糟糕了么？） 所以一步步地做下来，顺便就又记了个流水账： 建立大小写敏感硬盘镜像 首先，Mac OS X的版本必须比Tiger新 (i.e., 版本号在10.4或以上)，而且必须是Intel处理器，PowerPC不行。 然后，由于Mac OS X使用的文件系统不是默认大小写敏感的，就需要创建一个大小写敏感的硬盘镜像。步骤如下： Disk Utility &#8211;&#62; New Image，随便取个名字，这里用AndroidDisk，30GB足够了，然后注意选成Mac OS Extended (Case-sensitive, Journaled), &#8211;&#62; Create 生成的硬盘镜像文件名就是AndroidDisk.dmg了。似乎创建完以后OS会自动把这个镜像加载上去，但如果不喜欢这种方式，还是起个名字吧，用： $ hdiutil attach /path-to-image/AndroidDisk.dmg -mountpoint /Volumes/AndroidDisk Google的官网上推荐把这行加到~/.bash_profile里，这样以后每次用mountAndroid命令就行了。 function mountAndroid { hdiutil attach /Users/elisa/Develop/AndroidDisk.dmg -mountpoint /Volumes/AndroidDisk; } 安装一堆库和包 2.1.  去Apple developer下载Xcode （要有Apple ID并注册成Developer）并安装。 * 如果你用的是Mac OS X 10.6+ [...]]]></description>
			<content:encoded><![CDATA[
<a href="http://blog.mrseacow.org/wp-content/gallery/android/dont_panic.png" title="" class="shutterset_singlepic28" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/28__320x240_dont_panic.png" alt="dont_panic" title="dont_panic" />
</a>

<p>不得不说在Mac下开发Android程序很蛋疼</p>
<p>——那么就更蛋疼一点吧，少年！来编译Android源码⋯⋯ 在*nix甚至win下这都是非常简单的事情，但目前手边上只有iMac能用，只好移到Mac OS X来干了。</p>
<p>其实吧，这种事在哪里做都一样，只是前戏的步骤略微有点不同罢了⋯⋯（呃，又糟糕了么？） 所以一步步地做下来，顺便就又记了个流水账：</p>
<ol>
<li>
<h2>建立大小写敏感硬盘镜像</h2>
</li>
<p>首先，Mac OS X的版本必须比Tiger新 (i.e., 版本号在10.4或以上)，而且必须是Intel处理器，PowerPC不行。<br />
然后，由于Mac OS X使用的文件系统不是默认大小写敏感的，就需要创建一个大小写敏感的硬盘镜像。步骤如下：</p>
<p><span id="more-97"></span></p>
<p>Disk Utility &#8211;&gt; New Image，随便取个名字，这里用AndroidDisk，30GB足够了，然后注意选成Mac OS Extended (Case-sensitive, Journaled), &#8211;&gt; Create</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/android/android_image.png" title="" class="shutterset_singlepic26" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/26__480x320_android_image.png" alt="android_image" title="android_image" />
</a>

<p>生成的硬盘镜像文件名就是AndroidDisk.dmg了。似乎创建完以后OS会自动把这个镜像加载上去，但如果不喜欢这种方式，还是起个名字吧，用：</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1]; title: ;">
$ hdiutil attach /path-to-image/AndroidDisk.dmg -mountpoint /Volumes/AndroidDisk
</pre>
<p>Google的官网上推荐把这行加到~/.bash_profile里，这样以后每次用mountAndroid命令就行了。</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1]; title: ;">
function mountAndroid { hdiutil attach /Users/elisa/Develop/AndroidDisk.dmg -mountpoint /Volumes/AndroidDisk; }
</pre>
<li>
<h2>安装一堆库和包</h2>
</li>
<p>2.1.  去<a title="Apple Developer" href="http://developer.apple.com/" target="_blank">Apple developer</a>下载Xcode （要有Apple ID并注册成Developer）并安装。</p>
<p>* 如果你用的是Mac OS X 10.6+ (Snow Leopard)的话，可以安装XCode最新版本。</p>
<p>* 如果你用的是Mac OS X 10.5（Leopard）的话，可以在这样下载XCode 3.1.4：</p>
<pre class="brush: xml; auto-links: true; collapse: true; highlight: [1]; light: false; title: ; toolbar: true;">
打开Apple Developer Connection网站：　http://connect.apple.com/
以ADC会员登录
点右侧的Download
再点右侧下边一点的Developer Tools
</pre>
<p>2.2. 从<a href="http://www.macports.org/install.php">macports.org</a>.安装MacPorts</p>
<p>安装MacPorts之前需要确认环境变量PATH中，/opt/local/bin出现在/usr/bin之前，可以运行一下这行来确认：</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1]; title: ;">
$ echo $PATH
</pre>
<p>否则，就运行一下：</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1]; title: ;">
$ export PATH=/opt/local/bin:$PATH
</pre>
<p>并把上面那行加在~/.bash_profile里。</p>
<p>2.3. 从MacPorts安装make, git, and GPG packages：</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1]; title: ;">
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg
</pre>
<p>无聊顺手copy过来记录⋯⋯如果不手贱的话最好别点下面的那个+expand sources了！（其实这时你可以去小睡一觉⋯⋯）</p>
<pre class="brush: xml; auto-links: false; collapse: true; highlight: [1]; light: false; title: ; toolbar: true;">
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg
Password:
Warning: The installed version of Xcode (3.0) is known to cause problems. Version 3.1.4 or later is recommended on Mac OS X 10.5.
---&gt;  Computing dependencies for gmake
---&gt;  Dependencies to be installed: gettext expat libiconv gperf ncurses ncursesw
---&gt;  Fetching expat
---&gt;  Attempting to fetch expat-2.0.1.tar.gz from http://downloads.sourceforge.net/expat
---&gt;  Verifying checksum(s) for expat
---&gt;  Extracting expat
---&gt;  Configuring expat
---&gt;  Building expat
---&gt;  Staging expat into destroot
---&gt;  Installing expat @2.0.1_1
---&gt;  Activating expat @2.0.1_1
---&gt;  Cleaning expat
---&gt;  Fetching gperf
---&gt;  Attempting to fetch gperf-3.0.4.tar.gz from http://mirrors.ibiblio.org/pub/mirrors/gnu/ftp/gnu/gperf
---&gt;  Verifying checksum(s) for gperf
---&gt;  Extracting gperf
---&gt;  Configuring gperf
---&gt;  Building gperf
---&gt;  Staging gperf into destroot
---&gt;  Installing gperf @3.0.4_0
---&gt;  Activating gperf @3.0.4_0
---&gt;  Cleaning gperf
---&gt;  Fetching libiconv
---&gt;  Attempting to fetch libiconv-1.13.1.tar.gz from http://mirrors.ibiblio.org/pub/mirrors/gnu/ftp/gnu/libiconv
---&gt;  Verifying checksum(s) for libiconv
---&gt;  Extracting libiconv
---&gt;  Applying patches to libiconv
---&gt;  Configuring libiconv
---&gt;  Building libiconv
---&gt;  Staging libiconv into destroot
---&gt;  Installing libiconv @1.13.1_0
---&gt;  Activating libiconv @1.13.1_0
---&gt;  Cleaning libiconv
---&gt;  Fetching ncursesw
---&gt;  Verifying checksum(s) for ncursesw
---&gt;  Extracting ncursesw
---&gt;  Configuring ncursesw
---&gt;  Building ncursesw
---&gt;  Staging ncursesw into destroot
---&gt;  Installing ncursesw @5.8_0
---&gt;  Activating ncursesw @5.8_0
---&gt;  Cleaning ncursesw
---&gt;  Fetching ncurses
---&gt;  Attempting to fetch ncurses-5.9.tar.gz from http://mirrors.ibiblio.org/pub/mirrors/gnu/ftp/gnu/ncurses
---&gt;  Verifying checksum(s) for ncurses
---&gt;  Extracting ncurses
---&gt;  Applying patches to ncurses
---&gt;  Configuring ncurses
---&gt;  Building ncurses
---&gt;  Staging ncurses into destroot
---&gt;  Installing ncurses @5.9_0
---&gt;  Activating ncurses @5.9_0
---&gt;  Cleaning ncurses
---&gt;  Fetching gettext
---&gt;  Attempting to fetch gettext-0.18.1.1.tar.gz from http://mirrors.ibiblio.org/pub/mirrors/gnu/ftp/gnu/gettext
---&gt;  Verifying checksum(s) for gettext
---&gt;  Extracting gettext
---&gt;  Applying patches to gettext
---&gt;  Configuring gettext
---&gt;  Building gettext
---&gt;  Staging gettext into destroot
---&gt;  Installing gettext @0.18.1.1_2
---&gt;  Activating gettext @0.18.1.1_2
---&gt;  Cleaning gettext
---&gt;  Fetching gmake
---&gt;  Attempting to fetch make-3.82.tar.bz2 from http://mirrors.ibiblio.org/pub/mirrors/gnu/ftp/gnu/make
---&gt;  Verifying checksum(s) for gmake
---&gt;  Extracting gmake
---&gt;  Configuring gmake
---&gt;  Building gmake
---&gt;  Staging gmake into destroot
---&gt;  Installing gmake @3.82_0
---&gt;  Activating gmake @3.82_0
---&gt;  Cleaning gmake
Warning: The installed version of Xcode (3.0) is known to cause problems. Version 3.1.4 or later is recommended on Mac OS X 10.5.
---&gt;  Computing dependencies for libsdl
---&gt;  Dependencies to be installed: xorg-libXext pkgconfig xorg-libX11 xorg-bigreqsproto xorg-inputproto xorg-kbproto xorg-libXau xorg-xproto xorg-libXdmcp xorg-libxcb python27 bzip2 db46 gdbm openssl zlib readline sqlite3 xorg-libpthread-stubs xorg-xcb-proto libxml2 xorg-util-macros xorg-xcmiscproto xorg-xextproto xorg-xf86bigfontproto xorg-xtrans xorg-libXrandr xorg-randrproto xrender xorg-renderproto
---&gt;  Fetching pkgconfig
---&gt;  Attempting to fetch pkg-config-0.25.tar.gz from http://pkg-config.freedesktop.org/releases/
---&gt;  Verifying checksum(s) for pkgconfig
---&gt;  Extracting pkgconfig
---&gt;  Applying patches to pkgconfig
---&gt;  Configuring pkgconfig
---&gt;  Building pkgconfig
---&gt;  Staging pkgconfig into destroot
---&gt;  Installing pkgconfig @0.25_2
---&gt;  Activating pkgconfig @0.25_2
---&gt;  Cleaning pkgconfig
---&gt;  Fetching xorg-bigreqsproto
---&gt;  Attempting to fetch bigreqsproto-1.1.1.tar.bz2 from http://xorg.freedesktop.org/archive/individual/proto/
---&gt;  Verifying checksum(s) for xorg-bigreqsproto
---&gt;  Extracting xorg-bigreqsproto
---&gt;  Configuring xorg-bigreqsproto
---&gt;  Building xorg-bigreqsproto
---&gt;  Staging xorg-bigreqsproto into destroot
---&gt;  Installing xorg-bigreqsproto @1.1.1_0
---&gt;  Activating xorg-bigreqsproto @1.1.1_0
---&gt;  Cleaning xorg-bigreqsproto
---&gt;  Fetching xorg-inputproto
---&gt;  Attempting to fetch inputproto-2.0.1.tar.bz2 from http://xorg.freedesktop.org/archive/individual/proto/
---&gt;  Verifying checksum(s) for xorg-inputproto
---&gt;  Extracting xorg-inputproto
---&gt;  Configuring xorg-inputproto
---&gt;  Building xorg-inputproto
---&gt;  Staging xorg-inputproto into destroot
---&gt;  Installing xorg-inputproto @2.0.1_0
---&gt;  Activating xorg-inputproto @2.0.1_0
---&gt;  Cleaning xorg-inputproto
---&gt;  Fetching xorg-kbproto
---&gt;  Attempting to fetch kbproto-1.0.5.tar.bz2 from http://xorg.freedesktop.org/archive/individual/proto/
---&gt;  Verifying checksum(s) for xorg-kbproto
---&gt;  Extracting xorg-kbproto
---&gt;  Configuring xorg-kbproto
---&gt;  Building xorg-kbproto
---&gt;  Staging xorg-kbproto into destroot
---&gt;  Installing xorg-kbproto @1.0.5_0
---&gt;  Activating xorg-kbproto @1.0.5_0
---&gt;  Cleaning xorg-kbproto
---&gt;  Fetching xorg-xproto
---&gt;  Attempting to fetch xproto-7.0.21.tar.bz2 from http://xorg.freedesktop.org/archive/individual/proto
---&gt;  Verifying checksum(s) for xorg-xproto
---&gt;  Extracting xorg-xproto
---&gt;  Configuring xorg-xproto
---&gt;  Building xorg-xproto
---&gt;  Staging xorg-xproto into destroot
---&gt;  Installing xorg-xproto @7.0.21_0
---&gt;  Activating xorg-xproto @7.0.21_0
---&gt;  Cleaning xorg-xproto
---&gt;  Fetching xorg-libXau
---&gt;  Attempting to fetch libXau-1.0.6.tar.bz2 from http://xorg.freedesktop.org/archive/individual/lib/
---&gt;  Verifying checksum(s) for xorg-libXau
---&gt;  Extracting xorg-libXau
---&gt;  Configuring xorg-libXau
---&gt;  Building xorg-libXau
---&gt;  Staging xorg-libXau into destroot
---&gt;  Installing xorg-libXau @1.0.6_0
---&gt;  Activating xorg-libXau @1.0.6_0
---&gt;  Cleaning xorg-libXau
---&gt;  Fetching xorg-libXdmcp
---&gt;  Attempting to fetch libXdmcp-1.1.0.tar.bz2 from http://xorg.freedesktop.org/archive/individual/lib
---&gt;  Verifying checksum(s) for xorg-libXdmcp
---&gt;  Extracting xorg-libXdmcp
---&gt;  Configuring xorg-libXdmcp
---&gt;  Building xorg-libXdmcp
---&gt;  Staging xorg-libXdmcp into destroot
---&gt;  Installing xorg-libXdmcp @1.1.0_0
---&gt;  Activating xorg-libXdmcp @1.1.0_0
---&gt;  Cleaning xorg-libXdmcp
---&gt;  Fetching bzip2
---&gt;  Attempting to fetch bzip2-1.0.6.tar.gz from http://www.bzip.org/1.0.6
---&gt;  Verifying checksum(s) for bzip2
---&gt;  Extracting bzip2
---&gt;  Applying patches to bzip2
---&gt;  Configuring bzip2
---&gt;  Building bzip2
---&gt;  Staging bzip2 into destroot
---&gt;  Installing bzip2 @1.0.6_0
---&gt;  Activating bzip2 @1.0.6_0
---&gt;  Cleaning bzip2
---&gt;  Fetching db46
---&gt;  Attempting to fetch patch.4.6.21.1 from http://download.oracle.com/berkeley-db/patches/db/4.6.21/
---&gt;  Attempting to fetch patch.4.6.21.2 from http://download.oracle.com/berkeley-db/patches/db/4.6.21/
---&gt;  Attempting to fetch patch.4.6.21.3 from http://download.oracle.com/berkeley-db/patches/db/4.6.21/
---&gt;  Attempting to fetch patch.4.6.21.4 from http://download.oracle.com/berkeley-db/patches/db/4.6.21/
---&gt;  Attempting to fetch db-4.6.21.tar.gz from http://download-west.oracle.com/berkeley-db/
---&gt;  Verifying checksum(s) for db46
---&gt;  Extracting db46
---&gt;  Applying patches to db46
---&gt;  Configuring db46
---&gt;  Building db46
---&gt;  Staging db46 into destroot
---&gt;  Installing db46 @4.6.21_6
---&gt;  Activating db46 @4.6.21_6
---&gt;  Cleaning db46
---&gt;  Fetching gdbm
---&gt;  Attempting to fetch gdbm-1.8.3.tar.gz from http://mirrors.ibiblio.org/pub/mirrors/gnu/ftp/gnu/gdbm
---&gt;  Verifying checksum(s) for gdbm
---&gt;  Extracting gdbm
---&gt;  Configuring gdbm
---&gt;  Building gdbm
---&gt;  Staging gdbm into destroot
---&gt;  Installing gdbm @1.8.3_3
---&gt;  Activating gdbm @1.8.3_3
---&gt;  Cleaning gdbm
---&gt;  Fetching zlib
---&gt;  Attempting to fetch zlib-1.2.5.tar.bz2 from http://www.zlib.net/
---&gt;  Verifying checksum(s) for zlib
---&gt;  Extracting zlib
Error: On Mac OS X 10.5, zlib 1.2.5 requires Xcode 3.1 or later but you have Xcode 3.0.
Error: Target org.macports.extract returned: incompatible Xcode version
Error: Failed to install zlib
Log for zlib is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_archivers_zlib/main.log
Error: The following dependencies were not installed: xorg-libXext xorg-libX11 xorg-libxcb python27 openssl zlib readline sqlite3 xorg-libpthread-stubs xorg-xcb-proto libxml2 xorg-util-macros xorg-xcmiscproto xorg-xextproto xorg-xf86bigfontproto xorg-xtrans xorg-libXrandr xorg-randrproto xrender xorg-renderproto
Error: Status 1 encountered during processing.
To report a bug, see

$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg
Password:
---&gt;  Computing dependencies for gmake
---&gt;  Cleaning gmake
---&gt;  Computing dependencies for libsdl
---&gt;  Dependencies to be installed: xorg-libXext xorg-libX11 xorg-libxcb python27 openssl zlib readline sqlite3 xorg-libpthread-stubs xorg-xcb-proto libxml2 xorg-util-macros xorg-xcmiscproto xorg-xextproto xorg-xf86bigfontproto xorg-xtrans xorg-libXrandr xorg-randrproto xrender xorg-renderproto
---&gt;  Extracting zlib
---&gt;  Applying patches to zlib
---&gt;  Configuring zlib
---&gt;  Building zlib
---&gt;  Staging zlib into destroot
---&gt;  Installing zlib @1.2.5_0
---&gt;  Activating zlib @1.2.5_0
---&gt;  Cleaning zlib
---&gt;  Fetching openssl
---&gt;  Attempting to fetch openssl-1.0.0d.tar.gz from http://www.openssl.org/source/
---&gt;  Verifying checksum(s) for openssl
---&gt;  Extracting openssl
---&gt;  Applying patches to openssl
---&gt;  Configuring openssl
---&gt;  Building openssl
---&gt;  Staging openssl into destroot
---&gt;  Installing openssl @1.0.0d_0
---&gt;  Activating openssl @1.0.0d_0
---&gt;  Cleaning openssl
---&gt;  Fetching readline
---&gt;  Attempting to fetch readline-6.2.tar.gz from http://mirrors.ibiblio.org/pub/mirrors/gnu/ftp/gnu/readline
---&gt;  Verifying checksum(s) for readline
---&gt;  Extracting readline
---&gt;  Applying patches to readline
---&gt;  Configuring readline
---&gt;  Building readline
---&gt;  Staging readline into destroot
---&gt;  Installing readline @6.2.000_0
---&gt;  Activating readline @6.2.000_0
---&gt;  Cleaning readline
---&gt;  Fetching sqlite3
---&gt;  Attempting to fetch sqlite-autoconf-3070600.tar.gz from http://www.sqlite.org/
---&gt;  Verifying checksum(s) for sqlite3
---&gt;  Extracting sqlite3
---&gt;  Applying patches to sqlite3
---&gt;  Configuring sqlite3
---&gt;  Building sqlite3
---&gt;  Staging readline into destroot
---&gt;  Installing readline @6.2.000_0
---&gt;  Activating readline @6.2.000_0
---&gt;  Cleaning readline
---&gt;  Fetching sqlite3
---&gt;  Attempting to fetch sqlite-autoconf-3070600.tar.gz from http://www.sqlite.org/
---&gt;  Verifying checksum(s) for sqlite3
---&gt;  Extracting sqlite3
---&gt;  Applying patches to sqlite3
---&gt;  Configuring sqlite3
---&gt;  Building sqlite3
---&gt;  Staging sqlite3 into destroot
---&gt;  Installing sqlite3 @3.7.6_0
---&gt;  Activating sqlite3 @3.7.6_0
---&gt;  Cleaning sqlite3
---&gt;  Fetching python27
---&gt;  Attempting to fetch Python-2.7.1.tar.bz2 from http://www.python.org//ftp/python/2.7.1/
---&gt;  Verifying checksum(s) for python27
---&gt;  Extracting python27
---&gt;  Applying patches to python27
---&gt;  Configuring python27
---&gt;  Building python27
---&gt;  Staging python27 into destroot
---&gt;  Installing python27 @2.7.1_1
---&gt;  Activating python27 @2.7.1_1

To fully complete your installation and make python 2.7 the default,  please
run:
 	sudo port install python_select
 	sudo python_select python27

---&gt;  Cleaning python27
---&gt;  Fetching xorg-libpthread-stubs
---&gt;  Attempting to fetch libpthread-stubs-0.3.tar.bz2 from http://xcb.freedesktop.org/dist/
---&gt;  Verifying checksum(s) for xorg-libpthread-stubs
---&gt;  Extracting xorg-libpthread-stubs
---&gt;  Configuring xorg-libpthread-stubs
--&gt; ---&gt;  Building xorg-libpthread-stubs
---&gt;  Staging xorg-libpthread-stubs into destroot
---&gt;  Installing xorg-libpthread-stubs @0.3_0
---&gt;  Activating xorg-libpthread-stubs @0.3_0
---&gt;  Cleaning xorg-libpthread-stubs
---&gt;  Fetching libxml2
---&gt;  Attempting to fetch libxml2-2.7.8.tar.gz from ftp://fr.rpmfind.net/pub/libxml/
---&gt;  Verifying checksum(s) for libxml2
---&gt;  Extracting libxml2
---&gt;  Configuring libxml2
---&gt;  Building libxml2
---&gt;  Staging libxml2 into destroot
---&gt;  Installing libxml2 @2.7.8_0
---&gt;  Activating libxml2 @2.7.8_0
---&gt;  Cleaning libxml2
---&gt;  Fetching xorg-xcb-proto
---&gt;  Attempting to fetch xcb-proto-1.6.tar.bz2 from http://xcb.freedesktop.org/dist/
---&gt;  Verifying checksum(s) for xorg-xcb-proto
---&gt;  Extracting xorg-xcb-proto
---&gt;  Configuring xorg-xcb-proto
---&gt;  Building xorg-xcb-proto
---&gt;  Staging xorg-xcb-proto into destroot
---&gt;  Installing xorg-xcb-proto @1.6_0+python27
---&gt;  Activating xorg-xcb-proto @1.6_0+python27
---&gt;  Cleaning xorg-xcb-proto
---&gt;  Fetching xorg-libxcb
---&gt;  Attempting to fetch libxcb-1.7.tar.bz2 from http://xcb.freedesktop.org//dist/
---&gt;  Verifying checksum(s) for xorg-libxcb
---&gt;  Extracting xorg-libxcb
---&gt;  Configuring xorg-libxcb
---&gt;  Building xorg-libxcb
---&gt;  Staging xorg-libxcb into destroot
---&gt;  Installing xorg-libxcb @1.7_0+python27
---&gt;  Activating xorg-libxcb @1.7_0+python27
---&gt;  Cleaning xorg-libxcb
---&gt;  Fetching xorg-util-macros
---&gt;  Attempting to fetch util-macros-1.13.0.tar.bz2 from http://xorg.freedesktop.org/archive/individual/util/
---&gt;  Verifying checksum(s) for xorg-util-macros
---&gt;  Extracting xorg-util-macros
---&gt;  Configuring xorg-util-macros
---&gt;  Building xorg-util-macros
---&gt;  Staging xorg-util-macros into destroot
---&gt;  Installing xorg-util-macros @1.13.0_0
---&gt;  Activating xorg-util-macros @1.13.0_0
---&gt;  Cleaning xorg-util-macros
---&gt;  Fetching xorg-xcmiscproto
---&gt;  Attempting to fetch xcmiscproto-1.2.1.tar.bz2 from http://xorg.freedesktop.org/archive/individual/proto/
---&gt;  Verifying checksum(s) for xorg-xcmiscproto
---&gt;  Extracting xorg-xcmiscproto
---&gt;  Configuring xorg-xcmiscproto
---&gt;  Building xorg-xcmiscproto
---&gt;  Staging xorg-xcmiscproto into destroot
---&gt;  Installing xorg-xcmiscproto @1.2.1_0
---&gt;  Activating xorg-xcmiscproto @1.2.1_0
---&gt;  Cleaning xorg-xcmiscproto
---&gt;  Fetching xorg-xextproto
---&gt;  Attempting to fetch xextproto-7.2.0.tar.bz2 from http://xorg.freedesktop.org/archive/individual/proto
---&gt;  Verifying checksum(s) for xorg-xextproto
---&gt;  Extracting xorg-xextproto
---&gt;  Configuring xorg-xextproto
---&gt;  Building xorg-xextproto
---&gt;  Staging xorg-xextproto into destroot
---&gt;  Installing xorg-xextproto @7.2.0_0
---&gt;  Activating xorg-xextproto @7.2.0_0
---&gt;  Cleaning xorg-xextproto
---&gt;  Fetching xorg-xf86bigfontproto
---&gt;  Attempting to fetch xf86bigfontproto-1.2.0.tar.bz2 from http://xorg.freedesktop.org/archive/individual/proto/
---&gt;  Verifying checksum(s) for xorg-xf86bigfontproto
---&gt;  Extracting xorg-xf86bigfontproto
---&gt;  Configuring xorg-xf86bigfontproto
---&gt;  Building xorg-xf86bigfontproto
---&gt;  Staging xorg-xf86bigfontproto into destroot
---&gt;  Installing xorg-xf86bigfontproto @1.2.0_0
---&gt;  Activating xorg-xf86bigfontproto @1.2.0_0
---&gt;  Cleaning xorg-xf86bigfontproto
---&gt;  Fetching xorg-xtrans
---&gt;  Attempting to fetch xtrans-1.2.6.tar.bz2 from http://xorg.freedesktop.org/archive/individual/lib/
---&gt;  Verifying checksum(s) for xorg-xtrans
---&gt;  Extracting xorg-xtrans
---&gt;  Configuring xorg-xtrans
---&gt;  Building xorg-xtrans
---&gt;  Staging xorg-xtrans into destroot
---&gt;  Installing xorg-xtrans @1.2.6_0
---&gt;  Activating xorg-xtrans @1.2.6_0
---&gt;  Cleaning xorg-xtrans
---&gt;  Fetching xorg-libX11
---&gt;  Attempting to fetch libX11-1.4.3.tar.bz2 from http://xorg.freedesktop.org/archive/individual/lib/
---&gt;  Verifying checksum(s) for xorg-libX11
---&gt;  Extracting xorg-libX11
---&gt;  Configuring xorg-libX11
---&gt;  Building xorg-libX11
---&gt;  Staging xorg-libX11 into destroot
---&gt;  Installing xorg-libX11 @1.4.3_0
---&gt;  Activating xorg-libX11 @1.4.3_0
---&gt;  Cleaning xorg-libX11
---&gt;  Fetching xorg-libXext
---&gt;  Attempting to fetch libXext-1.2.0.tar.bz2 from http://xorg.freedesktop.org/archive/individual/lib
---&gt;  Verifying checksum(s) for xorg-libXext
---&gt;  Extracting xorg-libXext
---&gt;  Configuring xorg-libXext
---&gt;  Building xorg-libXext
---&gt;  Staging xorg-libXext into destroot
---&gt;  Installing xorg-libXext @1.2.0_0
---&gt;  Activating xorg-libXext @1.2.0_0
---&gt;  Cleaning xorg-libXext
---&gt;  Fetching xorg-randrproto
---&gt;  Attempting to fetch randrproto-1.3.2.tar.bz2 from http://xorg.freedesktop.org/archive/individual/proto/
---&gt;  Verifying checksum(s) for xorg-randrproto
---&gt;  Extracting xorg-randrproto
---&gt;  Configuring xorg-randrproto
---&gt;  Building xorg-randrproto
---&gt;  Staging xorg-randrproto into destroot
---&gt;  Installing xorg-randrproto @1.3.2_0
---&gt;  Activating xorg-randrproto @1.3.2_0
---&gt;  Cleaning xorg-randrproto
---&gt;  Fetching xorg-renderproto
---&gt;  Attempting to fetch renderproto-0.11.1.tar.bz2 from http://xorg.freedesktop.org/archive/individual/proto/
---&gt;  Verifying checksum(s) for xorg-renderproto
---&gt;  Extracting xorg-renderproto
---&gt;  Configuring xorg-renderproto
---&gt;  Building xorg-renderproto
---&gt;  Staging xorg-renderproto into destroot
---&gt;  Installing xorg-renderproto @0.11.1_0
---&gt;  Activating xorg-renderproto @0.11.1_0
---&gt;  Cleaning xorg-renderproto
---&gt;  Fetching xrender
---&gt;  Attempting to fetch libXrender-0.9.6.tar.bz2 from http://www.x.org/archive/individual/lib/
---&gt;  Verifying checksum(s) for xrender
---&gt;  Extracting xrender
---&gt;  Configuring xrender
---&gt;  Building xrender
---&gt;  Staging xrender into destroot
---&gt;  Installing xrender @0.9.6_0
---&gt;  Activating xrender @0.9.6_0
---&gt;  Cleaning xrender
---&gt;  Fetching xorg-libXrandr
---&gt;  Attempting to fetch libXrandr-1.3.1.tar.bz2 from http://xorg.freedesktop.org/archive/individual/lib/
---&gt;  Verifying checksum(s) for xorg-libXrandr
---&gt;  Extracting xorg-libXrandr
---&gt;  Configuring xorg-libXrandr
---&gt;  Building xorg-libXrandr
---&gt;  Staging xorg-libXrandr into destroot
---&gt;  Installing xorg-libXrandr @1.3.1_0
---&gt;  Activating xorg-libXrandr @1.3.1_0
---&gt;  Cleaning xorg-libXrandr
---&gt;  Fetching libsdl
---&gt;  Attempting to fetch SDL-1.2.14.tar.gz from http://www.libsdl.org/release/
---&gt;  Verifying checksum(s) for libsdl
---&gt;  Extracting libsdl
---&gt;  Applying patches to libsdl
---&gt;  Configuring libsdl
---&gt;  Building libsdl
---&gt;  Staging libsdl into destroot
---&gt;  Installing libsdl @1.2.14_9
---&gt;  Activating libsdl @1.2.14_9
---&gt;  Cleaning libsdl
---&gt;  Computing dependencies for git-core
---&gt;  Dependencies to be installed: curl curl-ca-bundle perl5 perl5.12 libidn p5-error rsync popt
---&gt;  Fetching perl5.12
---&gt;  Attempting to fetch perl-5.12.3.tar.bz2 from http://www.cpan.org/src/5.0/
---&gt;  Verifying checksum(s) for perl5.12
---&gt;  Extracting perl5.12
---&gt;  Applying patches to perl5.12
---&gt;  Configuring perl5.12
---&gt;  Building perl5.12
---&gt;  Staging perl5.12 into destroot
---&gt;  Installing perl5.12 @5.12.3_1
---&gt;  Activating perl5.12 @5.12.3_1
---&gt;  Cleaning perl5.12
---&gt;  Fetching perl5
---&gt;  Verifying checksum(s) for perl5
---&gt;  Extracting perl5
---&gt;  Configuring perl5
---&gt;  Building perl5
---&gt;  Staging perl5 into destroot
---&gt;  Installing perl5 @5.12.3_1+perl5_12
---&gt;  Activating perl5 @5.12.3_1+perl5_12
---&gt;  Cleaning perl5
---&gt;  Fetching curl-ca-bundle
---&gt;  Attempting to fetch curl-7.21.5.tar.bz2 from http://curl.haxx.se/download/
---&gt;  Attempting to fetch certdata-1.74.txt from http://distfiles.macports.org/curl/
---&gt;  Verifying checksum(s) for curl-ca-bundle
---&gt;  Extracting curl-ca-bundle
---&gt;  Applying patches to curl-ca-bundle
---&gt;  Configuring curl-ca-bundle
---&gt;  Building curl-ca-bundle
---&gt;  Staging curl-ca-bundle into destroot
---&gt;  Installing curl-ca-bundle @7.21.5_0
---&gt;  Activating curl-ca-bundle @7.21.5_0
---&gt;  Cleaning curl-ca-bundle
---&gt;  Fetching libidn
---&gt;  Attempting to fetch libidn-1.20.tar.gz from http://mirrors.ibiblio.org/pub/mirrors/gnu/ftp/gnu/libidn
---&gt;  Verifying checksum(s) for libidn
---&gt;  Extracting libidn
---&gt;  Configuring libidn
---&gt;  Building libidn
---&gt;  Staging libidn into destroot
---&gt;  Installing libidn @1.20_0
---&gt;  Activating libidn @1.20_0
---&gt;  Cleaning libidn
---&gt;  Fetching curl
---&gt;  Verifying checksum(s) for curl
---&gt;  Extracting curl
---&gt;  Applying patches to curl
---&gt;  Configuring curl
---&gt;  Building curl
---&gt;  Staging curl into destroot
---&gt;  Installing curl @7.21.5_1+ssl
---&gt;  Activating curl @7.21.5_1+ssl
---&gt;  Cleaning curl
---&gt;  Fetching p5-error
---&gt;  Attempting to fetch Error-0.17016.tar.gz from http://mirrors.ibiblio.org/pub/mirrors/CPAN/modules/by-module/Error
---&gt;  Verifying checksum(s) for p5-error
---&gt;  Extracting p5-error
---&gt;  Configuring p5-error
---&gt;  Building p5-error
---&gt;  Staging p5-error into destroot
---&gt;  Installing p5-error @0.17016_1
---&gt;  Activating p5-error @0.17016_1
---&gt;  Cleaning p5-error
---&gt;  Fetching popt
---&gt;  Attempting to fetch popt-1.16.tar.gz from http://rpm5.org/files/popt/
---&gt;  Attempting to fetch popt-1.16.tar.gz from http://distfiles.macports.org/popt
---&gt;  Verifying checksum(s) for popt
---&gt;  Extracting popt
---&gt;  Configuring popt
---&gt;  Building popt
---&gt;  Staging popt into destroot
---&gt;  Installing popt @1.16_0
---&gt;  Activating popt @1.16_0
---&gt;  Cleaning popt
---&gt;  Fetching rsync
---&gt;  Attempting to fetch rsync-3.0.7.tar.gz from http://rsync.samba.org/ftp/rsync/
---&gt;  Attempting to fetch rsync-3.0.7.tar.gz from http://rsync.samba.org/ftp/rsync/src/
---&gt;  Verifying checksum(s) for rsync
---&gt;  Extracting rsync
---&gt;  Applying patches to rsync
---&gt;  Configuring rsync
---&gt;  Building rsync
---&gt;  Staging rsync into destroot
---&gt;  Installing rsync @3.0.7_1
---&gt;  Activating rsync @3.0.7_1
---&gt;  Cleaning rsync
---&gt;  Fetching git-core
---&gt;  Attempting to fetch git-1.7.4.4.tar.bz2 from http://www.kernel.org/pub/software/scm/git/
---&gt;  Attempting to fetch git-manpages-1.7.4.4.tar.bz2 from http://www.kernel.org/pub/software/scm/git/
---&gt;  Attempting to fetch git-htmldocs-1.7.4.4.tar.bz2 from http://www.kernel.org/pub/software/scm/git/
---&gt;  Verifying checksum(s) for git-core
---&gt;  Extracting git-core
---&gt;  Applying patches to git-core
---&gt;  Configuring git-core
---&gt;  Building git-core
---&gt;  Staging git-core into destroot
---&gt;  Installing git-core @1.7.4.4_0+doc+python27
---&gt;  Activating git-core @1.7.4.4_0+doc+python27
---&gt;  Cleaning git-core
---&gt;  Computing dependencies for gnupg
---&gt;  Dependencies to be installed: libusb-compat libusb
---&gt;  Fetching libusb
---&gt;  Attempting to fetch libusb-1.0.8.tar.bz2 from http://downloads.sourceforge.net/libusb
---&gt;  Verifying checksum(s) for libusb
---&gt;  Extracting libusb
---&gt;  Configuring libusb
---&gt;  Building libusb
---&gt;  Staging libusb into destroot
---&gt;  Installing libusb @1.0.8_0
---&gt;  Activating libusb @1.0.8_0
---&gt;  Cleaning libusb
---&gt;  Fetching libusb-compat
---&gt;  Attempting to fetch libusb-compat-0.1.3.tar.bz2 from http://downloads.sourceforge.net/libusb
---&gt;  Verifying checksum(s) for libusb-compat
---&gt;  Extracting libusb-compat
---&gt;  Configuring libusb-compat
---&gt;  Building libusb-compat
---&gt;  Staging libusb-compat into destroot
---&gt;  Installing libusb-compat @0.1.3_0
---&gt;  Activating libusb-compat @0.1.3_0
---&gt;  Cleaning libusb-compat
---&gt;  Fetching gnupg
---&gt;  Attempting to fetch gnupg-1.4.11.tar.bz2 from ftp://gd.tuwien.ac.at/privacy/gnupg/gnupg
---&gt;  Verifying checksum(s) for gnupg
---&gt;  Extracting gnupg
---&gt;  Configuring gnupg
---&gt;  Building gnupg
---&gt;  Staging gnupg into destroot
---&gt;  Installing gnupg @1.4.11_0
---&gt;  Activating gnupg @1.4.11_0
---&gt;  Cleaning gnupg
居然！！你真的手贱点开了，于是可能被你发现了。。。开始装的XCode3.0不行。。。
只好装了XCode3.1.4再来过。。。
</pre>
<p>如果你是Mac OS X 10.4版本的话，还要安装个bison</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1]; title: ;">
% POSIXLY_CORRECT=1 sudo port install bison
</pre>
<p>下面要把gmake 3.82还原到3.81，否则之后编译源码会出错：</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1]; title: ;">
$ sudo vim /opt/local/etc/macports/sources.conf
</pre>
<p>然后在rsync那行的上面一行加上</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1]; title: ;">
file:///Users/Shared/dports
</pre>
<p>之后按这个步骤来就行了：</p>
<pre class="brush: xml; auto-links: false; highlight: [1,2,3,6,15]; title: ;">
$ mkdir /Users/Shared/dports
$ cd /Users/Shared/dports/
$ svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/ devel/gmake/
A    devel/gmake/Portfile
Checked out revision 50980.
$ portindex /Users/Shared/dports
Creating port index in /Users/Shared/dports
Adding port devel/gmake

Total number of ports parsed:	1
Ports successfully parsed:	1
Ports failed:			0
Up-to-date ports skipped:	0

$ sudo port install gmake @3.81
---&gt;  Computing dependencies for gmake
---&gt;  Fetching gmake
---&gt;  Attempting to fetch make-3.81.tar.bz2 from http://mirrors.ibiblio.org/pub/mirrors/gnu/ftp/gnu/make
---&gt;  Verifying checksum(s) for gmake
---&gt;  Extracting gmake
---&gt;  Configuring gmake
---&gt;  Building gmake
---&gt;  Staging gmake into destroot
---&gt;  Installing gmake @3.81_0
---&gt;  Deactivating gmake @3.82_0
---&gt;  Activating gmake @3.81_0
---&gt;  Cleaning gmake
</pre>
<p>检查一下gmake版本，看到版本号是3.81就对了：</p>
<pre class="brush: xml; auto-links: false; highlight: [1]; title: ;">
$ gmake --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-apple-darwin9.8.0
</pre>
<p>于是最后下载Android源码前的最后一步就是，修改文件标识符限制：<br />
由于Mac OS 默认将同时打开的文件标识符数量限制得太小，并行编译处理时可能会超出这个限制。<br />
所以在　~/.bash_profile　里加上这么一段：</p>
<pre class="brush: xml; auto-links: false; gutter: false; title: ;">
# set the number of open files to be 1024
ulimit -S -n 1024
</pre>
<li>
<h2>下载Android源码</h2>
</li>
<p>3.1. 安装Git Repo</p>
<pre class="brush: xml; auto-links: false; highlight: [1,2,3,7]; title: ;">
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl http://android.git.kernel.org/repo &gt; ~/bin/repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 17451  100 17451    0     0  39190      0 --:--:-- --:--:-- --:--:-- 57029
$ chmod a+x ~/bin/repo
</pre>
<p>3.2. 初始化Git Repo<br />
进入开始时挂载的镜像硬盘，建立一个工作目录：</p>
<pre class="brush: xml; auto-links: false; highlight: [1,2,3,7]; title: ;">
$cd /Volumes/AndroidDisk
$makedir WorkingSpace/
$cd Working Space/
</pre>
<p>在此目录下初始化repo，其间会提示你输入自己的名字和google account邮箱地址：</p>
<pre class="brush: xml; auto-links: false; highlight: [1]; title: ;">
$ repo init -u git://android.git.kernel.org/platform/manifest.git
</pre>
<p>最后，</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1]; title: ;">
$ repo init -u git://android.git.kernel.org/platform/manifest.git
</pre>
<p>如果你对git比较熟悉的话，后面就不用啰嗦啦。比如，<br />
设定其它的branch （例如froyo）</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1]; title: ;">
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
</pre>
<p>同步文件：</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1]; title: ;">
$ repo sync
</pre>
<p>（开始下载repo里的文件——源码。于是似乎睡一觉的时间又到了。。）<br />
再import一个GPG public key，</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1]; title: ;">
$ gpg --import
</pre>
<p>以下是官网给出的key，输入完按Ctrl+D结束：</p>
<pre class="brush: xml; auto-links: false; collapse: true; light: false; title: ; toolbar: true;">
    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.4.2.2 (GNU/Linux)
    mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
    lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
    8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
    u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
    wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
    /HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
    jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
    MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
    b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
    aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
    cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
    gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
    2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
    QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
    hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
    C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
    LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
    OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
    pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
    KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
    N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
    vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
    G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
    hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
    EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
    =Wi5D
    -----END PGP PUBLIC KEY BLOCK-----
</pre>
<p>如果你愿意的话还可以验证一下随便哪个Tag：</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1]; title: ;">
$ git tag -v TAG_NAME
</pre>
<li>
<h2>终于开始编译了</h2>
</li>
<p>小配置一下，用模拟器就行了。</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1,2]; title: ;">
$ . build/envsetup.sh
$ lunch generic-eng
</pre>
<p>开始编译，留log吧！</p>
<pre class="brush: xml; auto-links: false; highlight: [1]; title: ;">
$ make -j2 2&gt;&amp;1 | tee buildlog.txt
</pre>
<p>j后面的那个数字，官方解释是所用硬件线程数的1-2倍。<br />
然后就可以慢慢等了。。。留图纪念，千万Don&#8217;t Panic哦～</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/android/building_dont_panic.png" title="" class="shutterset_singlepic27" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/27__480x240_building_dont_panic.png" alt="building_dont_panic" title="building_dont_panic" />
</a>

<li>
<h2>要不要运行个模拟器试试？</h2>
</li>
<p>临时试一下的话，就临时配个环境变量：</p>
<pre class="brush: xml; auto-links: false; gutter: false; highlight: [1,2]; title: ;">
$ export PATH=$PATH:/Volumes/AndroidDisk/WorkingSpace/out/host/darwin-x86/bin/
$ export ANDROID_PRODUCT_OUT=/Volumes/AndroidDisk/WorkingSpace/out/target/product/generic/
</pre>
<p>运行模拟器：</p>
<pre class="brush: xml; auto-links: false; highlight: [1]; title: ;">
$ emulator
</pre>
<p>哎，终于出现了模拟的Android系统！好累。。（电脑酱：你累个毛，人家才累呢！）</p>
<p>
<a href="http://blog.mrseacow.org/wp-content/gallery/android/android_emulator.png" title="" class="shutterset_singlepic29" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/29__480x320_android_emulator.png" alt="android_emulator" title="android_emulator" />
</a>
</ol>
<p>下次再写个Android源码分析吧。不过好像写的人挺多了已经，不知能不能弄出点什么新意来⋯⋯</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mrseacow.org/2011-04/mac-os-x%e4%b8%8b%e7%bc%96%e8%af%91android%e6%ba%90%e7%a0%81/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>吐槽无力的旅途</title>
		<link>http://blog.mrseacow.org/2011-04/69/</link>
		<comments>http://blog.mrseacow.org/2011-04/69/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 05:02:54 +0000</pubDate>
		<dc:creator>mrseacow</dc:creator>
				<category><![CDATA[旅行]]></category>
		<category><![CDATA[加拿大]]></category>
		<category><![CDATA[吐槽]]></category>
		<category><![CDATA[恶搞]]></category>
		<category><![CDATA[时差]]></category>
		<category><![CDATA[林嘉欣]]></category>

		<guid isPermaLink="false">http://blog.mrseacow.org/?p=69</guid>
		<description><![CDATA[真的是雪！好吧，无论如何，这就是四月的天气了。 很想写篇咆哮体的，不过据说已经过时了，而且安安静静地写个blog还一边咆哮，总觉得有点分裂感…（喂，你居然敢说自己还不分裂吗？） 鉴于又打算开始写blog，就写个流水帐吧先？（神马逻辑这是？？） == 灰呀灰 == 十几个小时百无聊赖的灰机旅程，想起要到林嘉欣的出生的地方去了，就选了一直想去看但太忙没去成的《恋人絮语》，本来没抱什么幻想，觉得这种港片应该是能把Roland Barthes气活过来的程度吧，但看看着看着就感动哭了…… 尼玛让我情何以堪啊当时旁边坐着同去的老板的岳父母-_-&#8230; 后来就闭着眼把John Lennon的专辑都听了一遍。 这才灰了一半，依然没睡着。（啊喂，你想听着Lennon当催眠曲么？）。不过这屏幕上的灰机，很大啊，比日本还大吧看起来。。。 反正后来，看看书，读读paper（喂，装逼犯自重！），11个多小时就熬过来鸟～ 轻松哇！ 出境，取行李，IMM office，托运行李，手续转机，等2个小时灰机，再灰一个多小时。。。时间观已经彻底混乱了。 == 倒呀倒 == 调表！居然是夏令时！你们好意思吗这里，到处都是雪还过夏令时！还能不能再假一点啊？ 到了租的屋子，作为资深宅男，当然是……啊？开电脑？当然不！我先把床铺好了……-_-这个是宅的资本么，当然要先有个地方窝着。。。 然后去拜访了麦当劳叔叔。是哪个骗子说北美麦当劳最便宜，一刀一大个吃不完的？这么一个小套餐就$8！！有木有！！ 后来么，看着后院的积雪，一边咒骂这里真尼玛冷，一边心里涌起一股暖洋洋的变态的欢乐。不知道为什么，我真的喜欢天冷的地方呢！这样的天气，真让人有囤积癖发作的情绪，想像一只松鼠一样囤积好多的食物，或者像一只熊一样囤好多的膘。 14个小时的时差几乎刚好颠倒黑白，二十多小时没睡之后，蘑菇酱个混蛋威胁我说再这样下去会变成小清新，银镯男的-_- （不带这么恐吓人的吧啊啊啊！），于是结束了这长长的各种吐槽无力的一天。（你还嫌吐得不够过瘾么？） 确实有点不过瘾，但今天出门买手套时让我彻底吐槽无力了：商店里几乎找不到手套？为毛？问舍友，他说。。。这个季节，对当地人来说大概算夏天。。。算夏天。。。夏天。。。所以没什么人买手套了。。。 好吧，最后一张初夏的后院风景： == 山寨的歌词 == 不想把我唱给你听 现在已不见年少如花 花儿静静的谢 谁的岁月和的枝桠还能被装点 谁都能代替你呢 趁还不算太老尽情的爱吧 最最亲爱的世界末日啊 路途遥虽然不那么远，我们也还是在一起吧]]></description>
			<content:encoded><![CDATA[
<a href="http://blog.mrseacow.org/wp-content/gallery/calgary/snow_night.jpg" title="" class="shutterset_singlepic25" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/25__320x320_snow_night.jpg" alt="snow_night" title="snow_night" />
</a>

<p>真的是雪！好吧，无论如何，这就是四月的天气了。</p>
<p>很想写篇咆哮体的，不过据说已经过时了，而且安安静静地写个blog还一边咆哮，总觉得有点分裂感…（喂，你居然敢说自己还不分裂吗？） 鉴于又打算开始写blog，就写个流水帐吧先？（神马逻辑这是？？）</p>
<p><span id="more-69"></span></p>
<p>== 灰呀灰 ==</p>
<p>十几个小时百无聊赖的灰机旅程，想起要到<a title="林嘉欣" href="http://zh.wikipedia.org/wiki/%E6%9E%97%E5%98%89%E6%AC%A3" target="_blank">林嘉欣</a>的出生的地方去了，就选了一直想去看但太忙没去成的《<a title="戀人絮語" href="http://www.loversdiscourse.com/" target="_blank">恋人絮语</a>》，本来没抱什么幻想，觉得这种港片应该是能把Roland Barthes气活过来的程度吧，但看看着看着就感动哭了…… 尼玛让我情何以堪啊当时旁边坐着同去的老板的岳父母-_-&#8230; 后来就闭着眼把John Lennon的专辑都听了一遍。</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/calgary/1-air_lennon.jpg" title="" class="shutterset_singlepic18" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/18__480x360_1-air_lennon.jpg" alt="1-air_lennon" title="1-air_lennon" />
</a>

<p>这才灰了一半，依然没睡着。（啊喂，你想听着Lennon当催眠曲么？）。不过这屏幕上的灰机，很大啊，比日本还大吧看起来。。。</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/calgary/2-big_plane.jpg" title="" class="shutterset_singlepic19" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/19__480x360_2-big_plane.jpg" alt="2-big_plane" title="2-big_plane" />
</a>

<p>反正后来，看看书，读读paper（喂，装逼犯自重！），11个多小时就熬过来鸟～ 轻松哇！ 出境，取行李，IMM office，托运行李，手续转机，等2个小时灰机，再灰一个多小时。。。时间观已经彻底混乱了。</p>
<p>== 倒呀倒 ==</p>
<p>调表！居然是夏令时！你们好意思吗这里，到处都是雪还过夏令时！还能不能再假一点啊？</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/calgary/6-outside.jpg" title="" class="shutterset_singlepic23" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/23__480x360_6-outside.jpg" alt="6-outside" title="6-outside" />
</a>

<p>到了租的屋子，作为资深宅男，当然是……啊？开电脑？当然不！我先把床铺好了……-_-这个是宅的资本么，当然要先有个地方窝着。。。</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/calgary/4-calgary_room.jpg" title="" class="shutterset_singlepic21" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/21__480x360_4-calgary_room.jpg" alt="4-calgary_room" title="4-calgary_room" />
</a>

<p>然后去拜访了麦当劳叔叔。是哪个骗子说北美麦当劳最便宜，一刀一大个吃不完的？这么一个小套餐就$8！！有木有！！</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/calgary/3-calgary_mc.jpg" title="" class="shutterset_singlepic20" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/20__480x360_3-calgary_mc.jpg" alt="3-calgary_mc" title="3-calgary_mc" />
</a>

<p>后来么，看着后院的积雪，一边咒骂这里真尼玛冷，一边心里涌起一股暖洋洋的变态的欢乐。不知道为什么，我真的喜欢天冷的地方呢！这样的天气，真让人有囤积癖发作的情绪，想像一只松鼠一样囤积好多的食物，或者像一只熊一样囤好多的膘。</p>
<p>14个小时的时差几乎刚好颠倒黑白，二十多小时没睡之后，蘑菇酱个混蛋威胁我说再这样下去会变成小清新，银镯男的-_- （不带这么恐吓人的吧啊啊啊！），于是结束了这长长的各种吐槽无力的一天。（你还嫌吐得不够过瘾么？）</p>
<p>确实有点不过瘾，但今天出门买手套时让我彻底吐槽无力了：商店里几乎找不到手套？为毛？问舍友，他说。。。这个季节，对当地人来说大概算夏天。。。算夏天。。。夏天。。。所以没什么人买手套了。。。</p>
<p>好吧，最后一张初夏的后院风景：</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/calgary/5-backyard.jpg" title="" class="shutterset_singlepic22" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/22__480x360_5-backyard.jpg" alt="5-backyard" title="5-backyard" />
</a>

<p>== <a title="想把我唱给你听" href="http://www.youtube.com/watch?v=VdaGq07R6O8" target="_blank">山寨的歌词</a> ==</p>
<p>不想把我唱给你听<br />
现在已不见年少如花<br />
花儿静静的谢<br />
谁的岁月和的枝桠还能被装点</p>
<p>谁都能代替你呢<br />
趁还不算太老尽情的爱吧<br />
最最亲爱的世界末日啊<br />
路途遥虽然不那么远，我们也还是在一起吧</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mrseacow.org/2011-04/69/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>BP墨西哥湾原油泄漏事件，海洋生物，以及海牛</title>
		<link>http://blog.mrseacow.org/2010-06/deepwater-horizon-environment-and-manatee/</link>
		<comments>http://blog.mrseacow.org/2010-06/deepwater-horizon-environment-and-manatee/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 11:16:00 +0000</pubDate>
		<dc:creator>mrseacow</dc:creator>
				<category><![CDATA[环境]]></category>
		<category><![CDATA[BP]]></category>
		<category><![CDATA[原油泄漏]]></category>
		<category><![CDATA[海洋生物]]></category>
		<category><![CDATA[海牛]]></category>

		<guid isPermaLink="false">http://blog.mrseacow.org/?p=49</guid>
		<description><![CDATA[BP在墨西哥湾的原油泄漏事件,（中文）到今天已经2个月了，其间多方补救都无法阻止泄漏，尽管各国政府和成千上万的志愿者们都在努力都在努力，依然未见太好的效果。 下图是受到影响的区域地图： 这次原油泄漏造成的生态灾难几乎已经无法衡量，目前甚至都没有人敢做出任何预测。对比一下20多年前，1989年在美国阿拉斯加的Exxon Valdez号触礁沉没事件，直到2009年才有报告指出：“造成大約28萬隻海鳥、2800隻海獺、 300隻斑海豹、250隻白頭海雕以及22隻虎鯨死亡。其實，這只是表面上所看到的情況。那些死亡後沉入海底的海鳥、海豹、海獺和鯨等遠不止這些數量。”之后阿拉斯加的鲱鱼产业彻底崩溃，大马哈鱼的种群数量一直在非常低的水平，小型虎鲸群濒临灭绝…… 而早在一个月以前，就有报道这次BP的原油泄漏至少超过Exxon Valdez号20倍以上，相比之下，造成的生态环境灾难可想而知。目前墨西哥湾原油泄漏一带的海鸟、海龟、鱼类、海豹等各种海洋生物已几乎无法生存。 泄漏出来的原油会附着在海鸟的羽毛上，让海鸟无法飞走，困在油污中，饿死、窒息、溺死中毒而死。下一张图片是在浮油中的鹈鹕，来自Win McNamee/Getty Images： 对于鲸、海豹、海龟这些动物，它们身上沾了原油之后，会尝试不断游到水面上来甩掉油，又沾上，最终力尽而死，沉入海底或者被冲到岸边，下图是一只已死的海龟，来自AP Photo/Charlie Riedel： 最后，作为一只网上的海牛，我想呼吁大家关注墨西哥湾的海牛。生活在墨西哥湾的是海牛家族中濒临灭绝的西印度海牛，它们虽然没有什么天敌威胁，但支持浅海水生植物而且繁殖率偏低，墨西哥湾泄漏的原油向东飘散，已威胁到了它们的生存。Digital Journal上个月的这篇一篇文章也介绍了海牛的现状。 下面是一些海牛的图片，部分来自维基，国家地理杂志和Save the Manatees Club网站，我在那里捐助并领养了一只名叫Vector的海牛，如果你想帮助它们，可以点击这个 链接捐助。 相关链接：上 帝请你救救墨西哥湾的海牛吧]]></description>
			<content:encoded><![CDATA[<p>BP在墨西哥湾的<a href="http://www.deepwaterhorizonresponse.com/go/site/2931/" target="_self">原油泄漏事件</a>,（<a href="http://buildaroo.com/news/zh-tw/article/bp-oil-spill-timeline-ongoing-disaster/" target="_self">中文</a>）到今天已经2个月了，其间多方补救都无法阻止泄漏，尽管各国政府和<a href="http://www.volunteerfloridadisaster.org/" target="_blank">成千上万的志愿者们</a>都在努力都在努力，依然未见太好的效果。</p>
<p>下图是受到影响的区域地图：</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/env/gulf_map.jpg" title="" class="shutterset_singlepic6" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/6__600x450_gulf_map.jpg" alt="gulf_map" title="gulf_map" />
</a>

<p>这次原油泄漏造成的生态灾难几乎已经无法衡量，目前甚至都没有人敢做出任何预测。对比一下20多年前，1989年在美国阿拉斯加的<a href="http://en.wikipedia.org/wiki/Exxon_Valdez_oil_spill" target="_blank">Exxon Valdez号触礁沉没事件</a>，直到2009年才有报告指出：“造成大約28萬隻海鳥、2800隻海獺、  300隻斑海豹、250隻白頭海雕以及22隻虎鯨死亡。其實，這只是表面上所看到的情況。那些死亡後沉入海底的海鳥、海豹、海獺和鯨等遠不止這些數量。”之后阿拉斯加的鲱鱼产业彻底崩溃，大马哈鱼的种群数量一直在非常低的水平，小型虎鲸群濒临灭绝……</p>
<p>而早在一个月以前，就有报道这次BP的原油泄漏至少<a href="http://buildaroo.com/news/article/bp-oil-spill-worse-exxon-valdez/" target="_blank">超过Exxon Valdez号20倍以上</a>，相比之下，造成的生态环境灾难可想而知。目前墨西哥湾原油泄漏一带的海鸟、海龟、鱼类、海豹等各种海洋生物已几乎无法生存。</p>
<p>泄漏出来的原油会附着在海鸟的羽毛上，让海鸟无法飞走，困在油污中，饿死、窒息、溺死中毒而死。下一张图片是在浮油中的鹈鹕，来自Win McNamee/Getty Images：</p>
<p><span id="more-49"></span></p>

<a href="http://blog.mrseacow.org/wp-content/gallery/env/plican2.jpg" title="" class="shutterset_singlepic7" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/7__600x450_plican2.jpg" alt="plican2" title="plican2" />
</a>

<p>对于鲸、海豹、海龟这些动物，它们身上沾了原油之后，会尝试不断游到水面上来甩掉油，又沾上，最终力尽而死，沉入海底或者被冲到岸边，下图是一只已死的海龟，来自AP Photo/Charlie Riedel：</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/env/turtle.jpg" title="" class="shutterset_singlepic8" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/8__600x450_turtle.jpg" alt="turtle" title="turtle" />
</a>

<p>最后，作为一只网上的海牛，我想呼吁大家关注墨西哥湾的海牛。生活在墨西哥湾的是海牛家族中濒临灭绝的<a href="http://zh.wikipedia.org/zh/%E8%A5%BF%E5%8D%B0%E5%BA%A6%E6%B5%B7%E7%89%9B" target="_blank">西印度海牛</a>，它们虽然没有什么天敌威胁，但支持浅海水生植物而且繁殖率偏低，墨西哥湾泄漏的原油向东飘散，已威胁到了它们的生存。Digital Journal上个月的这篇一篇文章也<a href="http://www.digitaljournal.com/article/291977" target="_blank">介绍了海牛的现状</a>。</p>
<p>下面是一些海牛的图片，部分来自维基，国家地理杂志和<a href="http://www.savethemanatee.org/default.html" target="_self">Save  the Manatees Club网站</a>，我在那里捐助并领养了一只名叫Vector的海牛，如果你想帮助它们，可以点击<a href="http://www.savethemanatee.org/donation.htm" target="_blank">这个 链接</a>捐助。</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/manatee/donation_drs.jpg" title="" class="shutterset_singlepic17" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/17__600x450_donation_drs.jpg" alt="donation_drs" title="donation_drs" />
</a>


<a href="http://blog.mrseacow.org/wp-content/gallery/manatee/10924_1600x1200-wallpaper-cb1267713146.jpg" title="" class="shutterset_singlepic16w=600" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/16__x450_10924_1600x1200-wallpaper-cb1267713146.jpg" alt="10924_1600x1200-wallpaper-cb1267713146" title="10924_1600x1200-wallpaper-cb1267713146" />
</a>


<a href="http://blog.mrseacow.org/wp-content/gallery/manatee/db_manatee0171.jpg" title="" class="shutterset_singlepic9" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/9__600x450_db_manatee0171.jpg" alt="manatee" title="manatee" />
</a>


<a href="http://blog.mrseacow.org/wp-content/gallery/manatee/db_manatee0441.jpg" title="" class="shutterset_singlepic10" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/10__600x450_db_manatee0441.jpg" alt="manatee" title="manatee" />
</a>


<a href="http://blog.mrseacow.org/wp-content/gallery/manatee/db_manatee0451.jpg" title="" class="shutterset_singlepic11" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/11__600x450_db_manatee0451.jpg" alt="manatee" title="manatee" />
</a>


<a href="http://blog.mrseacow.org/wp-content/gallery/manatee/db_manatee0491.jpg" title="" class="shutterset_singlepic12" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/12__600x450_db_manatee0491.jpg" alt="manatee" title="manatee" />
</a>


<a href="http://blog.mrseacow.org/wp-content/gallery/manatee/fl_fig04.jpg" title="" class="shutterset_singlepic13" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/13__600x450_fl_fig04.jpg" alt="manatee" title="manatee" />
</a>


<a href="http://blog.mrseacow.org/wp-content/gallery/manatee/manatees-0009.jpg" title="" class="shutterset_singlepic14" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/14__600x450_manatees-0009.jpg" alt="manatee" title="manatee" />
</a>


<a href="http://blog.mrseacow.org/wp-content/gallery/manatee/usgs_hunter_maggie_ariel_10.jpg" title="" class="shutterset_singlepic15" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/15__600x450_usgs_hunter_maggie_ariel_10.jpg" alt="manatee" title="manatee" />
</a>

[[Show as slideshow]]
<p>相关链接：<a href="http://hi.baidu.com/aoki/blog/item/163e6e22fca618a94723e846.html">上 帝请你救救墨西哥湾的海牛吧</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mrseacow.org/2010-06/deepwater-horizon-environment-and-manatee/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>GCC要开始用C++写了</title>
		<link>http://blog.mrseacow.org/2010-06/using-cpp-in-gcc/</link>
		<comments>http://blog.mrseacow.org/2010-06/using-cpp-in-gcc/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 10:42:42 +0000</pubDate>
		<dc:creator>mrseacow</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[GCC]]></category>

		<guid isPermaLink="false">http://blog.mrseacow.org/?p=42</guid>
		<description><![CDATA[今天最大的新闻当属Mark Mitchell在Mail List里发表了一篇&#8221;Using C++ in GCC is OK&#8220;，宣布C++语言将要加入GCC的开发。 看到这条消息，估计很多人跟我一样第一反应就是想到几年前Linux Torvalds大神在git的新闻组上爆粗口大骂C++的事情，被骂的Dmitry同学比较无辜，当然这可能跟他是微软的雇员也有分不开的关系……为平衡观点，再链一条C++发明者Stroustrup关于C++语言的FAQ吧，其实这位大神本人都无意将C++与其它语言相比。 不管怎么说，当时Linus提出的几条反对的理由可能说出了很多人的心声，比如很多C++程序员太烂，STL库经常出问题，加上抽象编程模型后效率太无奈等等。今天当GCC的Commitee和FSF决定用C++来开发很多人赖以生存的GCC时，上面的那些问题都解决了么？ 我本人对用C++来写GCC是否能为我们“带来一个更好的编译器”还持怀疑态度，人们现在还为C++的标准争论不休，能用的只能是C++98标准：ISO/IEC 14882-1998。C++的优势也许在于它的代码结构、丰富的模板库以及各种上层逻辑实现起来的方便，实在是看不出用C++来开发现在的GCC的point在哪里。 GCC的开发团队凝聚了我心目中现在世界上还在干活的几个最牛的使用C语言的开发者，当他们要转向C++，并加入新的C++开发者时，很难想象会是一幅什 么样的场景：第一件事，如Mark Mitchell所说，就是制定一个C++ coding standards。 不过我毕竟不是GCC的开发者，只是希望，以后新的GCC不要变慢就好。好吧，也只能相信他们了。 各位有什么想法，欢迎在这里一起讨论:)]]></description>
			<content:encoded><![CDATA[
<a href="http://blog.mrseacow.org/wp-content/gallery/misc/gccegg-65.png" title="" class="shutterset_singlepic5" >
	<img class="ngg-singlepic ngg-left" src="http://blog.mrseacow.org/wp-content/gallery/cache/5__109x130_gccegg-65.png" alt="gccegg-65" title="gccegg-65" />
</a>

<p>今天最大的新闻当属Mark  Mitchell在Mail List里发表了一篇&#8221;<a href="http://gcc.gnu.org/ml/gcc/2010-05/msg00705.html" target="_self">Using C++ in GCC is OK</a>&#8220;，宣布C++语言将要加入GCC的开发。</p>
<p>看到这条消息，估计很多人跟我一样第一反应就是想到几年前<a href="http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918" target="_self">Linux Torvalds大神在git的新闻组上爆粗口大骂C++</a>的事情，被骂的Dmitry同学比较无辜，当然这可能跟他是微软的雇员也有分不开的关系……为平衡观点，再链一条C++发明者<a href="http://www2.research.att.com/~bs/bs_faq.html#compare" target="_self">Stroustrup关于C++语言的FAQ</a>吧，其实这位大神本人都无意将C++与其它语言相比。</p>
<p>不管怎么说，当时Linus提出的几条反对的理由可能说出了很多人的心声，比如很多C++程序员太烂，STL库经常出问题，加上抽象编程模型后效率太无奈等等。今天当GCC的Commitee和FSF决定用C++来开发很多人赖以生存的GCC时，上面的那些问题都解决了么？</p>
<p>我本人对用C++来写GCC是否能为我们“带来一个更好的编译器”还持怀疑态度，人们现在还为C++的标准争论不休，能用的只能是C++98标准：<a href="http://www.iso.org/iso/catalogue_detail.htm?csnumber=25845" target="_self">ISO/IEC  14882-1998</a>。C++的优势也许在于它的代码结构、丰富的模板库以及各种上层逻辑实现起来的方便，实在是看不出用C++来开发现在的GCC的point在哪里。</p>
<p>GCC的开发团队凝聚了我心目中现在世界上还在干活的几个最牛的使用C语言的开发者，当他们要转向C++，并加入新的C++开发者时，很难想象会是一幅什 么样的场景：第一件事，如Mark Mitchell所说，就是制定一个C++ coding standards。</p>
<p>不过我毕竟不是GCC的开发者，只是希望，以后新的GCC不要变慢就好。好吧，也只能相信他们了。</p>
<p>各位有什么想法，欢迎在这里一起讨论:)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mrseacow.org/2010-06/using-cpp-in-gcc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>如何做一个好的搅局者——有关Android和iPhone</title>
		<link>http://blog.mrseacow.org/2010-05/disruptor-android-and-iphoneos/</link>
		<comments>http://blog.mrseacow.org/2010-05/disruptor-android-and-iphoneos/#comments</comments>
		<pubDate>Sun, 16 May 2010 15:58:49 +0000</pubDate>
		<dc:creator>mrseacow</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[经济]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[市场]]></category>
		<category><![CDATA[开发者]]></category>

		<guid isPermaLink="false">http://blog.mrseacow.org/?p=34</guid>
		<description><![CDATA[前些天NDP Group发表的一份第一季度智能手机市场调查报告，经All Things Digital转载后吸引了很多眼球，华尔街日报（Wall Street Journal，WSJ，卫生巾）网站也大呼，Android的市场份额超过了iPhone。当然，国内各大标题党媒体疯狂装载原文翻译时似乎忘记了ATD原始的标题叫作&#8221;Android真的超过了iPhone吗？&#8221;，水果公司对此也很不满，显然上个月水果开发者大会上乔帮主还说自家占有了移动浏览器市场64%的份额，确实有点没面子，于是拿出IDC的报告说iPhone销售第一季度同比上年增长131%！ 下面就是那张大家争相转载的折线图 from All Things Digital： 不管数据怎样，也许像水果公司的发言人说的那样，NDP Group的数据局限性很大，不能说明问题，大家至少也都看到了，目前Android作为一个刚进来不久的搅局者，在市场上很成功。关于这一的成功，也许并非偶然，在经济学中也有着对应的理论： 1995年，哈佛大学的两位教授在HBR(Harvard Business Review)上发表了一篇著名文章：Disruptive Technologies: Catching the Wave。这套理论模型告诉大家，一个成功的搅局者，它的成长经历大约是这样的： 首先，开始有一个从低端产品开始发展的搅局者，相对于一个高端产品的制造者，搅局者的利润率很低，它主要着眼于一些容易满足于相对过得去的产品的用户，这些用户并不愿意为高端的产品付那么多钱，即便那些产品的品质相对要好很多。 一旦搅局者在低端市场站稳脚跟，它会开始尝试提高利润率：生产好性能好一点的产品，争取部分愿意为更优质些的服务多付一点钱的用户。这时，原先高端产品的制造者并不愿花非常大的资金和精力去争夺这部分低端偏中端的市场，而是着力于争取体高产品性能，吸引高端用户。 当2.这个步骤反复上演，高端产品制造者的市场份额一点点被蚕食，而搅局者的利润从极微，薄随着市场份额的增大，也慢慢变大，产品的性能也逐渐提高。 这个大致的过程可参考Wikipedia上Disruptive Technology这一词条中的一张插图： 最终结果当然并非谁打败了谁，而是搅局者成功地走向了商业上的成熟。也许大家觉得这个过程很“显然”，不过这个理论中还有很多发人深思的细节，其中比较重要的是“创新”，尤其是在第2步中。关于这个问题作者还写了另一本书：《The Innovator&#8217;s Solution: Creating and Sustaining Successful Growth》。 关于目前的Android手机，除了它与各大运营商之间的关系，我目前关注的主要是Android Market的健康程度。Market中应用程序的质量令人堪忧，和Apple App Store相比，拿得出手的应用确实很少。从某种程度上来说，Android平台开发应用程序用Java，起点相对与iPhoneOS的ObjC+Cocoa较低应该也是原因。 有人会Argue说，Android Market起步比较晚，还有发展空间，但是我们也看到，按照目前的情况，Android可以以此方法讨好使用者，而开发者很难直接从卖APP获利，各种移动平台广告服务AdMob也不太容易让开发者赚钱,更何况，android有AdMob，iPhone也有iAad号称一年能给开发者带来8.25亿美元。开发者是永远不能得罪的。 我觉得自己已经过了那个为纯粹兴趣写代码，不考虑任何其它东西的的时代了。虽然依然认为C永远是最牛×的，也许继续保持着对linux, kernel之类的兴趣，也许今后会去努力尝试一些自己永远弄不懂的OO，甚至浅尝辄止过但一贯鄙视的Java…… 或许会从开发Android App开始？说不定会有这个机会吧:D]]></description>
			<content:encoded><![CDATA[<p>前些天NDP Group发表的一份第一季度智能手机市场调查报告，经<a class="vt-p" title="All Things Digital" href="http://mediamemo.allthingsd.com/20100510/is-android-really-outselling-apple/" target="_blank">All Things Digital转载</a>后吸引了很多眼球，华尔街日报（Wall Street Journal，WSJ<span style="text-decoration: line-through;">，卫生巾</span>）网站也大呼，<a class="vt-p" title="WSJ的新闻" href="http://blogs.wsj.com/digits/2010/05/10/android-vs-the-iphone-the-battle-heats-up/" target="_blank">Android的市场份额超过了iPhone</a>。当然，国内各大标题党媒体疯狂装载原文翻译时似乎忘记了ATD原始的标题叫作&#8221;Android真的超过了iPhone吗？&#8221;，水果公司对此也很不满，显然上个月水果开发者大会上<a class="vt-p" href="http://live.gdgt.com/2010/04/08/live-iphone-os-4-0-event-coverage/" target="_blank">乔帮主还说自家占有了移动浏览器市场<strong>64%</strong>的份额</a>，确实有点没面子，于是拿出IDC的报告说iPhone销售第一季度同比上年<a class="vt-p" href="http://news.cnet.com/8301-13579_3-20004410-37.html" target="_blank">增长<strong>131%</strong></a>！</p>
<p>下面就是那张大家争相转载的折线图 from <a class="vt-p" title="All Things Digital" href="http://mediamemo.allthingsd.com/20100510/is-android-really-outselling-apple/" target="_blank">All Things Digital</a>：</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/misc/npd-mobile-os.png" title="" class="shutterset_singlepic3" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/3__320x240_npd-mobile-os.png" alt="npd-mobile-os" title="npd-mobile-os" />
</a>

<hr />
<p>不管数据怎样，也许像水果公司的发言人说的那样，NDP Group的数据局限性很大，不能说明问题，大家至少也都看到了，目前Android作为一个刚进来不久的搅局者，在市场上很成功。关于这一的成功，也许并非偶然，在经济学中也有着对应的理论：</p>
<p>1995年，哈佛大学的两位教授在HBR(Harvard Business Review)上发表了一篇著名文章：<a class="vt-p" title="Disruptive Theory" href="http://hbr.org/1995/01/disruptive-technologies/ar/1" target="_blank">Disruptive Technologies: Catching the Wave</a>。这套理论模型告诉大家，一个成功的搅局者，它的成长经历大约是这样的：</p>
<p><span id="more-34"></span></p>
<ol>
<li>首先，开始有一个从低端产品开始发展的搅局者，相对于一个高端产品的制造者，搅局者的利润率很低，它主要着眼于一些容易满足于相对过得去的产品的用户，这些用户并不愿意为高端的产品付那么多钱，即便那些产品的品质相对要好很多。</li>
<li>一旦搅局者在低端市场站稳脚跟，它会开始尝试提高利润率：生产好性能好一点的产品，争取部分愿意为更优质些的服务多付一点钱的用户。<strong>这时</strong>，原先高端产品的制造者并不愿花非常大的资金和精力去争夺这部分低端偏中端的市场，而是着力于争取体高产品性能，吸引高端用户。</li>
<li>当2.这个步骤反复上演，高端产品制造者的市场份额一点点被蚕食，而搅局者的利润从极微，薄随着市场份额的增大，也慢慢变大，产品的性能也逐渐提高。</li>
</ol>
<p>这个大致的过程可参考Wikipedia上<a class="vt-p" title="Wikipedia上的Disruptive Technology词条" href="http://en.wikipedia.org/wiki/Disruptive_technology#cite_note-1" target="_blank">Disruptive Technology</a>这一词条中的一张插图：</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/misc/disruptivetechnology_wiki.gif" title="" class="shutterset_singlepic4" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/4__320x240_disruptivetechnology_wiki.gif" alt="disruptivetechnology_wiki" title="disruptivetechnology_wiki" />
</a>

<p>最终结果当然并非谁打败了谁，而是搅局者成功地走向了商业上的成熟。也许大家觉得这个过程很“显然”，不过这个理论中还有很多发人深思的细节，其中比较重要的是“创新”，尤其是在第2步中。关于这个问题作者还写了另一本书：<a class="vt-p" title="Amazon上The Innovator's Solution的链接" href="http://www.amazon.com/Innovators-Solution-Creating-Sustaining-Successful/dp/1578518520/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1274022022&amp;sr=8-1" target="_blank">《The  Innovator&#8217;s Solution: Creating and Sustaining Successful Growth》</a>。</p>
<hr />
<p>关于目前的Android手机，除了它与各大运营商之间的关系，我目前关注的主要是Android Market的健康程度。Market中应用程序的质量令人堪忧，和Apple App Store相比，拿得出手的应用确实很少。从某种程度上来说，Android平台开发应用程序用Java，起点相对与iPhoneOS的ObjC+Cocoa较低应该也是原因。</p>
<p>有人会Argue说，Android Market起步比较晚，还有发展空间，但是我们也看到，按照目前的情况，Android可以以此方法讨好使用者，而开发者很难直接从卖APP获利，各种移动平台广告服务AdMob也不太容易让开发者赚钱,更何况，android有AdMob，iPhone也有iAad号称<a class="vt-p" title="分析师预计苹果iAd将让开发者获利8.25亿美元" href="http://www.cnmsdn.com/html/201005/1273167519ID4340.html" target="_blank">一年能给开发者带来8.25亿美元</a>。开发者是永远不能得罪的。</p>
<p>我觉得自己已经过了那个为纯粹兴趣写代码，不考虑任何其它东西的的时代了。虽然依然认为C永远是最牛×的，也许继续保持着对linux, kernel之类的兴趣，也许今后会去努力尝试一些自己永远弄不懂的OO，甚至浅尝辄止过但一贯鄙视的Java…… 或许会从开发Android App开始？说不定会有这个机会吧:D</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mrseacow.org/2010-05/disruptor-android-and-iphoneos/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Welcome &#8211; 开Blog第一篇</title>
		<link>http://blog.mrseacow.org/2010-05/welcome-%e5%bc%80blog%e7%ac%ac%e4%b8%80%e7%af%87/</link>
		<comments>http://blog.mrseacow.org/2010-05/welcome-%e5%bc%80blog%e7%ac%ac%e4%b8%80%e7%af%87/#comments</comments>
		<pubDate>Tue, 11 May 2010 17:19:21 +0000</pubDate>
		<dc:creator>mrseacow</dc:creator>
				<category><![CDATA[历史]]></category>

		<guid isPermaLink="false">http://blog.mrseacow.org/?p=13</guid>
		<description><![CDATA[首先感谢国家，欢迎各位（包括各大搜索引擎）的到访。 开了自己的第一个独立Blog，在独立Blog时代已日薄西山的今天，是不是显得有点另类呢？ 用的WP免费主题，英文是标题无衬线体Myriad和标签正文衬线体Georgia结合，中文标题simhei和正文默认宋体结合，基本无任何美工可言…… 现在正拼命回想从上网开始到现在干过的类似事情，话说好汉不提当年勇，不过作为一只没勇可提的笨海牛，还是可以絮絮叨叨一些旧事的:) 其实也不知道写些什么，这就当作开博第一篇吧： 1999年，就在Bob Young同学离开Red Hat的那年，我在自己那台刚买的当年牛逼闪闪的32MB内存赛扬300CPU的机器上，装了RH6.0，用传说中的FireBird搭了一个Telnet访问的BBS，当然，访问量不及水木清华和小百合什么的…… 当时喜欢写些乱七八糟的东西，也只有自己看，备份在5寸的大软盘们上面。 &#160; ——“啊，什么？还有5寸大软盘？” ——呃，因为我当是……有很多……大软盘……什么的，原先在家里一台老的8088上用的，于是不想浪费，把软盘驱动器接到了新机器的主板上。这样也为后来的悲剧埋下了种子——后来，大软盘驱动器就坏鸟，再后来找到能用的大软盘驱动器时，（下面是咆哮式，抱歉）啊！！！大软盘！！！已经！！！！读不出来鸟！！！！啊啊啊啊啊！！！！！  如果有好奇心很强的小盆友想看看这种东东的话，我偷了一张图片： 差点忘了，在3322.org还提供主页空间和ftp服务时，做过几个小网站玩。现在3322已经变成一个DDNS服务商了。 2000年，就在响马同学把西祠胡同卖给e龙的那年，我入住了西祠胡同，那个当年号称中国最大的网络社区。至于现在什么样，咱表示没怎么去了，不大了解…… &#160; 当年在那样一个各种白领，大中学生，社会青年，流氓团伙等汇聚的地方，我和当时的一位小女同学开始了青涩而纯真又扑朔迷离的初恋，现实到网上，网上到现实。当然啦，最后，我是个好人……依人已躲离我越来越远，到了大洋彼岸，不过现在还有些联系，这里就不多说鸟。 为满足一些同学的好奇心，贴个当年的西祠网站首页(不好意思，我把你的width设成了250px)，不过各位不要把这里当成灵堂什么的就好： 后来再后来，就没认真写过什么Blog一类的东西了，除了在MSN Space上放放照片，学校的BBS上存存档，帮朋友在免费空间上搭搭WordPress的Blog或者DedeCMS的主页或者Discuz的论坛…… 直到今年——伟大的距离2012还有两年的2010年！ 本海牛终于不知道那根筋搭错了，想开个Blog，原因有如下几点： &#160; 我的买的域名mrseacow.org和空间如果只做远程备份/SVN服务器/线上少数几个PHP APP之用，似乎有点浪费。 和朋友交流，抽风想写的东西时有个地方放。 刚和朋友一起用WP给系里的一个组做了一个巨难看的还是雏形中的主页，正好顺手再搭一个blog，根据边际效应这样比较合算。下面的链接只做SEO之用，不管你有多好奇，千万表点！ The joint ITCS-HKU Wireless Networking Group 这里，请允许我喊一句在美国南部沿海很流行的口号： Save Manatee!  （……台下各种西红柿鸡蛋） 也许，这里以后会发展成一个技术Blog，写C,OpenSource,*nix的东西； 也许，会变成生活点滴和游记的收藏夹； 也许，会沦落成我一个话痨/考据癖/发神经的地方。 不过截至目前，我还没有想好。 ——不管怎样，都感谢你曾造访这里（什么？我开头就已经感谢过国家了啊！），那么，就请疯狂点击右侧的订阅RSS和和页顶的收藏按钮，以满足我的各种虚荣心吧！]]></description>
			<content:encoded><![CDATA[<p>首先感谢国家，欢迎各位（包括各大搜索引擎）的到访。</p>
<p>开了自己的第一个独立Blog，在<em><del>独立Blog时代已日薄西山的</del></em>今天，是不是显得有点另类呢？ 用的WP免费主题，英文是标题无衬线体Myriad和标签正文衬线体Georgia结合，中文标题simhei和正文默认宋体结合，基本无任何美工可言……</p>
<p>现在正拼命回想从上网开始到现在干过的类似事情，话说好汉不提当年勇，不过作为一只<span style="text-decoration: underline;">没勇可提的笨海牛</span>，还是可以絮絮叨叨一些旧事的:) 其实也不知道写些什么，这就当作开博第一篇吧：</p>
<p><span id="more-13"></span></p>
<hr />
<p><strong>1999年</strong>，就在Bob Young同学离开Red Hat的那年，我在自己那台刚买的<em><del>当年牛逼闪闪的</del></em>32MB内存赛扬300CPU的机器上，装了RH6.0，用传说中的<a class="vt-p" href="http://en.wikipedia.org/wiki/Firebird_BBS" target="_blank">FireBird</a>搭了一个Telnet访问的BBS，当然，访问量不及水木清华和小百合什么的…… 当时喜欢写些乱七八糟的东西，也只有自己看，备份在5寸的大软盘们上面。</p>
<p>&nbsp;</p>
<p>——“啊，什么？还有5寸大软盘？”</p>
<p>——呃，因为我当是……有很多……大软盘……什么的，原先在家里一台老的8088上用的，于是不想浪费，把软盘驱动器接到了新机器的主板上。这样也为后来的悲剧埋下了种子——后来，大软盘驱动器就坏鸟，再后来找到能用的大软盘驱动器时，（下面是咆哮式，抱歉）啊！！！大软盘！！！已经！！！！读不出来鸟！！！！啊啊啊啊啊！！！！！  如果有好奇心很强的小盆友想看看这种东东的话，我偷了一张图片：</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/misc/5inchdisc.jpg" title="" class="shutterset_singlepic1" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/1__320x240_5inchdisc.jpg" alt="5寸大软盘" title="5寸大软盘" />
</a>

<p>差点忘了，在3322.org还提供主页空间和ftp服务时，做过几个小网站玩。现在3322已经变成一个DDNS服务商了。</p>
<hr />
<p><strong>2000年</strong>，就在响马同学把<a class="vt-p" href="http://www.xici.net" target="_blank">西祠胡同</a>卖给e龙的那年，我入住了西祠胡同，那个当年号称中国最大的网络社区。至于现在什么样，咱表示没怎么去了，不大了解……</p>
<p>&nbsp;</p>
<p>当年在那样一个各种白领，大中学生，社会青年<em><del>，流氓团伙</del></em>等汇聚的地方，我和当时的一位小女同学开始了青涩而纯真<em><del>又扑朔迷离</del></em>的初恋，现实到网上，网上到现实。当然啦，最后，我是个<a class="vt-p" title="好人文化" href="http://zh.wikipedia.org/wiki/%E5%A5%BD%E4%BA%BA%E6%96%87%E5%8C%96" target="_blank">好人</a>……依人已<em><del>躲</del></em>离我越来越远，到了大洋彼岸，不过现在还有些联系，这里就不多说鸟。 为满足一些同学的好奇心，贴个当年的西祠网站首页<em>(不好意思，我把你的width设成了250px)</em>，不过各位不要把这里当成灵堂什么的就好：</p>

<a href="http://blog.mrseacow.org/wp-content/gallery/misc/oldxici_2000.jpg" title="" class="shutterset_singlepic2" >
	<img class="ngg-singlepic" src="http://blog.mrseacow.org/wp-content/gallery/cache/2__320x240_oldxici_2000.jpg" alt="2000年的老西祠胡同" title="2000年的老西祠胡同" />
</a>

<hr />
<p><strong>后来再后来</strong>，就没认真写过什么Blog一类的东西了，除了在MSN Space上放放照片，学校的BBS上存存档，帮朋友在免费空间上搭搭WordPress的Blog或者DedeCMS的主页或者Discuz的论坛…… 直到今年——伟大的距离2012还有两年的2010年！ 本海牛终于不知道那根筋搭错了，想开个Blog，原因有如下几点：</p>
<p>&nbsp;</p>
<ol>
<li>我的买的域名mrseacow.org和空间如果只做远程备份/SVN服务器/线上少数几个PHP APP之用，似乎有点浪费。</li>
<li>和朋友交流，抽风想写的东西时有个地方放。</li>
<li>刚和朋友一起用WP给系里的一个组做了一个<del><em>巨难看的</em></del>还是雏形中的主页，正好顺手再搭一个blog，根据边际效应这样比较合算。下面的链接只做SEO之用，不管你有多好奇，千万表点！ <a class="vt-p" href="http://i.cs.hku.hk/~wing" target="_blank">The joint ITCS-HKU Wireless Networking Group</a></li>
<li>这里，请允许我喊一句在美国南部沿海很流行的口号： Save Manatee!  （……台下各种西红柿鸡蛋）</li>
</ol>
<p>也许，这里以后会发展成一个技术Blog，写C,OpenSource,*nix的东西；</p>
<p>也许，会变成生活点滴和游记的收藏夹；</p>
<p>也许，会沦落成我一个话痨/考据癖/发神经的地方。</p>
<p>不过截至目前，我还没有想好。</p>
<p>——不管怎样，都感谢你曾造访这里（什么？我开头就已经感谢过国家了啊！），那么，就请疯狂点击右侧的订阅RSS和和页顶的收藏按钮，以满足我的各种虚荣心吧！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mrseacow.org/2010-05/welcome-%e5%bc%80blog%e7%ac%ac%e4%b8%80%e7%af%87/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>

