<?xml version="1.0" encoding="GB2312"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:admin="http://webns.net/mvcb/"
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

	<channel>
		<title>
			<![CDATA[sanecat的博客]]>
		</title>
		<link>http://sanecat.bokee.com/index.html</link>
		<description>
			<![CDATA[欢迎访问sanecat的博客]]>
		</description>
		<dc:language>zh-cn</dc:language>
		<dc:creator>email</dc:creator>
		<dc:date>2007-09-07T07:40:43Z</dc:date>
		<admin:generatorAgent rdf:resource="http://blog.bokee.com.com" />
	
					<item>
				<title>
					<![CDATA[我想忘却]]>
				</title>
				<link>http://sanecat.bokee.com/6410443.html</link>
				<description>
					<![CDATA[<p><p>昨天晚上，我在妈妈的怀里痛苦了一场。也许正向妈妈说的，我还没长大，现在这个社会，感情没有单纯的。现在想想，我的确很傻，如果不是这次要去芬兰工作一段时间，告诉她我会去英国找她，她会继续蒙蔽我，不让我知道她已经变心了。我真的不能相信，直到她终于肯在电话里跟我说。我从没这么伤心过，从没一夜无法合眼。我想一个人呆着，我不知道自己理智上清楚的事实，在感情上是否同样。她还活在我的空气里么？曾经，在她飞走的时候，我们承诺要坚守信念。这三个月的时间里，我每天都想着她，在我心里是快了的，充实的。即使只有思念，去那么快乐。原来我的快了早就是自己的了，是无知，愚笨。我不想再想了，还是忘却吧。</p><p>我真的能忘却么？</p></p>]]>
				</description>
				<guid isPermaLink="false">
					6410443@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-08-11  12:27</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[一个人住]]>
				</title>
				<link>http://sanecat.bokee.com/6409822.html</link>
				<description>
					<![CDATA[<p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">一路都是坐运通</span><span lang="EN-US"><font face="Calibri">205</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">回家的，一路都忍不住落泪。我以为可以天长地久的爱情就这么结束了，我爱了整整两年，坦诚的爱着一个我以为也可以同样爱我的女孩。真的，我知道她也是真的爱我，不过没我那么完全。我的爱情是不设防的。所以我注定要留着泪回家。也许我真的太天真了，让妈妈说就是一点心眼都没有，其实她也这么说。可这就是我，不变的我。待人坦诚，爱的全心全意，毫无保留。她出国前我跟她说过，我有心理准备，难免会变得。时间长了，感情会淡掉的。没有人能够阻挡。不过我坚信一个信念，我也让她坚信一个信念，只要我们彼此相爱，两年的时间会很快过去的。我也会在中间去英国看她。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">时间跟我开了个玩笑，还是故意把我骗了。现在是八月</span><span lang="EN-US"><font face="Calibri">10</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">号，离开飞机起飞的那天才不到</span><span lang="EN-US"><font face="Calibri">3</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">个月。她提出分手了，在我们自己的博客里留言告诉我的。我真的不敢相信，用手机大过去问她。这一切是真的。如果不是她亲口告诉我，我是不可能相信的。不可能。于是，我只能接受这不能接受的现实。可我真的不知道，自己现在是不是真的完全明白了这意味着什么？我每天的心情，自豪谈论的幸福，充满希望的热切，一切的一切，记忆？难道都没了么？我不敢想下去，不敢。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><font size="3">我是不是太傻了，不应该全心全意地爱，还是应该理智些，出国的爱情是不会继续存活的。我不知道。难道人的信念真的这么脆弱么？还是她根本就没有跟我一样保护着我们的感情，我不愿意相信这是真的。也许今夜又要彻夜难眠了。我不知道自己会不会好，什么时候能好。真的很痛，很痛。</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><font size="3">我回家了，回到自己的博客。她离开时我们建立的两个人的世界在冉冉的三个月后不在有人住。以后一个人住，在自己的世界里，在过去两年很少回来的世界里住。</font></span></p></p>]]>
				</description>
				<guid isPermaLink="false">
					6409822@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-08-10  20:37</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[项目被“喀嚓”了]]>
				</title>
				<link>http://sanecat.bokee.com/6313764.html</link>
				<description>
					<![CDATA[<p><p>项目被咔嚓了。为什么，PM也没说。可惜了，从去年9月开始的，一直到昨天。项目已经完成80%了，现在正准备做XCAP的新功能，我还指望能把XCAP学一学，写道论文里呢。看来希望不大了。以后要开始做一个网管的大项目。不过PM说可能还要留50%的精力继续这个项目。谈何容易，要是仅仅维护还是可以的，要是继续做XCAP，就不容易了。新东西，没人知道怎么做，所以要花精力研究，之用50%而不是全力的话，我很怀疑效果和进度。总之比较难办啦。</p><p>不过不幸中的万幸是没被裁掉，如果没有新项目，弄不好就会被NSN退回DCC，那样的话，合同自动解除就会暂时休业。不过想想也没什么，无非就是再去找新工作了。看看吧，现在还不想跳。能做做网管也行。这方面还从没接触过呢。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					6313764@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-06-6  23:50</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[发达和不发达]]>
				</title>
				<link>http://sanecat.bokee.com/6313747.html</link>
				<description>
					<![CDATA[<p><p>今天和外教老师上课，他是英国人，而高中在新西兰上的。大学毕业后拉了中国。因为他爸爸说他可以来中国看看，了解跟多的东西。</p><p>这样我想起《欧洲任我游》的电影和我前段时间在网上查到的关于跨国旅行的信息。发达国家间的公民跨国旅行是很方便的，签证很容易会获得，甚至可以落地签。而发展中国家的人要想去发达国家就难了。签证发放手续多，要求严格。签证官会跟申请人谈话以获得申请人出去后回国的概率和留下的概率。如果认为不回过的概率高，就难通过。我怀疑这帮人都是受过心理分析训练的。不过没办法，他们是发达，的确有很多人出去就不回来。中国人要努力啊，否则人才流失就更严重了。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					6313747@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-06-6  23:39</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[“再见，李肇星”]]>
				</title>
				<link>http://sanecat.bokee.com/6249345.html</link>
				<description>
					<![CDATA[<p><p>从新闻得知的，我最喜欢的外交家李肇星要退下来了。下面摘抄的都来自腾讯网。</p><p>2003年12月，已担任中国外交部长近10个月的李肇星，被网友问起“做外长容易，还是与网民交流容易？”李肇星回答，“两者都容易，都使我快乐。但为赢得这份快乐，要付出艰辛劳动。”</p><p>李肇星出任外长后，有一天会见美国十几位名牌大学教授。一位教授突然发问：网上有消息说，美国情报部门在中国订购的一架波音飞机上安装了尖端的窃听器设备，他们估计，这架飞机有可能被中方派作专机使用。李部长平静地表示：<font color="#990000">我们在国际贸易中，坚持公平原则。在中美贸易中，我们买什么，美国就应该给什么。凡是没花钱的东西，我们都不要。</font>如此巧妙应对，立刻赢得一阵喝彩声。</p><p><table style="MARGIN-TOP: 10px" cellspacing="0" cellpadding="0" width="238" border="0"><tbody><tr><td valign="middle" align="center" background="http://mat1.qq.com/view/lianghui/qq_lh226_38.gif" height="26"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #fff"><strong>李肇星答记者问经典语录</strong></span></td></tr><tr><td style="PADDING-RIGHT: 6px; PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; PADDING-TOP: 6px" align="left" height="26"><p>　　<a href="http://view.news.qq.com/a/20070205/000031.htm" target="_blank"><font color="#333333">任新闻司发言人时，李肇星对记者曾袒露心扉：“发言人虽然上电视，但不是即兴表演追求自我表现的演员。发言人也不是那些抱有侥幸心理的学生，不会可以‘蒙’。发言人代表国家，应该字斟句酌，如履薄冰……必须掌握两条：说我知道的，说我可以说和应该说的。”</font></a><br />　　<a href="http://view.news.qq.com/a/20070306/000054.htm" target="_blank"></a><a href="http://view.news.qq.com/a/20040307/000001.htm" target="_blank"><font color="#333333">李肇星提醒提问的日本记者说：“你可以回去问问你自己国家的领导人，在历史的问题上，一些欧洲国家的领导人能够做到的事情，为什么他们做不到呢？”（2004年）</font></a> <br />　　<a href="http://view.news.qq.com/a/20070306/000054.htm" target="_blank"><font color="#333333">李肇星对一位提问欧盟对华军售问题的德国记者说：“我们不需要从你们那儿买多少先进武器，</font><font color="#990000">中国也是个发展中国家，实际上也没有钱从你们那儿买那么多价格很高、我们也没什么用的武器。</font><font color="#333333">”（2005年）</font></a><br />　　<a href="http://view.news.qq.com/a/20070306/000054.htm" target="_blank"><font color="#333333">日本记者请李肇星评价朝鲜拥有核武器问题时，他很谦虚地回答：“</font><font color="#990000">在朝鲜是否拥有核武器上，我想这方面你可能知道得比我更多，换句话说我不比你知道得更多。</font><font color="#333333">”（2005）</font></a><br />　　<a href="http://view.news.qq.com/a/20070306/000054.htm" target="_blank"><font color="#333333">有台湾记者问李肇星，“如果有机会当面对陈水扁讲话，你最想和他讲什么？”李肇星立即非常气愤地回答：“</font><font color="#990000">我凭什么当面对他讲话，他是谁？</font><font color="#333333">” （2006年）</font></a><br />　　 <a href="http://view.news.qq.com/a/20070306/000054.htm" target="_blank"><font color="#333333">有记者追问：“日本媒体传您即将引退的消息是否属实？”李肇星不改其“剽悍”作风，反问记者：“</font><font color="#990000">你信日本人的，还是信我的？如果信他的，不用来问我。</font><font color="#333333">”面对李外长犀利的词锋，提问的记者只好连忙说“我信你的，我信你的。” （2006年）</font></a><br />　　<a href="http://view.news.qq.com/a/20070306/000054.htm" target="_blank"><font color="#333333">李肇星被记者问到台湾领导人陈水扁涉及贪污的问题时说：</font><font color="#990000">省级干部贪污不归我管</font><font color="#333333">。（2006年）</font></a> </p></td></tr></tbody></table></p></p>]]>
				</description>
				<guid isPermaLink="false">
					6249345@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-04-28  23:17</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://sanecat.bokee.com/6214245.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=45918','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=6214245&blogID=43250'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					6214245@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-04-9  22:27</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[让中国成为一个大国]]>
				</title>
				<link>http://sanecat.bokee.com/6164053.html</link>
				<description>
					<![CDATA[<p><p>今天晚上看了两个有意思的东西。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其一是3.15晚会，里面最我感触、心痛和无奈的就是那条9年间吞噬25人的河水、冷漠，还可以毫不夸张的说是冷酷、没责任。我的第一感觉就是，这些水利局和公园管理局的国家干部如何会如此不人道，没人情！现在，我又在想，除了这些，是不是还有什么原因导致悲剧屡屡发生呢？难道这25个人，25个家庭的命运就被这两个人的冷漠而毁灭么？断然不是。也许是这个社会缺少些什么，是这个社会太冷漠，无视人或者某些人的冷漠，无视我们对工作，对责任的不细致，不负责。多做一些警示，把栏杆做的更有栏护作用，相对于抓经济发展来说也许是不那么起眼的事情，但确实是一个细致的，关乎人命的事。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其二是看到今天FT中文网的头条文章<a href="http://www.ftchinese.com/sc/story.jsp?id=001010015&pos=DAILY_NEWS&pa1=mainnews&pa2=0&loc=DAILY%20EMAIL">《在大国的门槛上》</a>。“如果说，‘大国’已进入中国的视野，那么，其今后路途的通畅和谐， 很大程度上取决于它如何应对每一发展阶段的细部问题。到头来，任何宏大的工程，都是无数细节的呈现。大国工程，自然也是如此。然而，所有细节的背后，都逃脱不过设计的理念与制度转型。”（违法摘取一句）这是文章快结束时作者想告诉大家的。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “社会和谐”，寓意的实在太多，我不知道该怎么描述它，但我理想中的和谐社会一定是要有爱心，有关爱，有责任，有制度，有监督。而这些，是需要国人有足够的信心、耐心去规划大事、落实小事才能达到的。总览全局固然重要，但千万不要忘记“细节决定成败”！尤其那些需要我们用心去做，却难以量化的软的东西——人文和谐！</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 写到这里，我又想起另外一篇FT中文网的文章，讲的是“软实力”。这篇文章的以部分拷贝我一直放在桌面，但找不到链接了，于是粘贴在下面：</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;《 软实力 》</p><p>曾被马克·吐温嘲弄为没有希望的疟疾横行的以色列，何以一跃而为中东“花园”，成为一个科技大国，一个跻身于世界经济发达国家之林的强国？探寻以色列崛起之谜，人人不时提到她蓄积多年的“软实力”。</p><p>软实力，是哈佛大学教授约瑟夫·奈在上世纪90年代初首先提出的新概念，包括文化的感召力、意识形态的吸引力、国际关系中的结盟能力、利用现有国际组织的能力等要素。如果说军事层面的“硬实力”，是以色列在对敌战争中屡屡获胜的关键，那么，文化意识形态层面的“软实力”则是以色列崛起的关键。</p><p>以色列人口中四分之三以上是犹太人。犹太文化2000年来对“一个神、一本书、一种信仰”的忠诚，最终孕育成“四海一家”的“犹太一体观”。1948年，以色列建国后，世界各地的犹太人纷纷“回家”。以色列央行行长斯坦利·费希尔在2005年5月1日之前，还是个美国犹太人。</p><p>58年过后的今天，以色列的人口数，已由建国时的60万，变成700万。在希伯来大学攻取哲学博士学位的张宝贤对我们说，只要你信仰犹太教，无论你来自哪里，都可以皈依为以色列公民。换言之，今天的犹太人不再是一个确定的种族，而是一个文化共同体。</p><p>我们在耶路撒冷街头看到的警察，就像一个“多国部队”，不同肤色不同种族的警察们，其父母或者来自于北非，或者来自于前苏联，或者来自于美洲。</p><p>“四海一家”的文化观，影响着世界各地的犹太人。以色列外交部一位官员说，世界各地犹太人的捐款，是1950年代以色列甩掉战争包袱的重要因素。</p><p>引领我们去以色列和巴勒斯坦冲突地带的Leah Soibel，是个生长于美国的犹太人。数年前，她放弃了纽约的舒适生活，只身来到以色列，组建了一个帮助国际记者理解巴以冲突的非政府组织——“以色列项目组织”，引领来自世界各国的记者，进入巴勒斯坦火箭喜欢袭击的危险地带。我们乘坐直升机观察巴以局势的3000美元的费用，就是该非政府组织支付的。</p><p>“四海一家”的文化观，鼓励以色列之外的犹太人重返故土，鼓舞以色列国内的犹太人捍卫故土，热爱祖国。在巴以冲突频频的加沙附近，有个名叫Sha＇ar Hanegev的地区委员会。EliahuSegal是该委员会的行政长官。他说，炮火几天前刚刚烧毁了他的院落，但他们一家三代并不会因为恐惧而撤退或者搬迁他处。在被火箭炮摧毁成断壁残垣上，人们的情绪没有我们想象的紧张。</p><p>外交部官员说，民众和政府之间已经形成了对付恐怖活动的默契，耶路撒冷死伤惨重的爆炸发生不过两小时，秩序就恢复到从前。超市、酒店、办公大楼的安检，已是人们日常生活中的常态，人们的表情，除了配合，就是安详。 </p><p>以色列人对祖国的热爱，在前以色列驻沪总领事IlanMaor看来，也是以色列经济腾飞的原动力。作为一名外交官，他走到哪里，都不忘记告诉自己的女儿，他们的家在以色列，他们要为家园为以色列而工作。我们采访斯坦利·费希尔的时候，没有问他以色列的经济成就问题，采访结束起身离去前，这位新以色列公民恳切地希望我们，将以色列的经济成就告诉中国人。</p><p>以色列的崛起，乃至于复国，都离不开美国人。据称，这在一定程度上缘自两国文化和意识形态的亲昵。</p><p>文化是犹太人对世界的最大贡献。作为一本记录犹太人思想体系的书，《圣经》对世界的贡献，没有哪本书可以与之相媲美。流淌其中的“一神思想”，在千年的历史长河中慢慢幻化成对人和生命的尊重，并影响到美国的立国先贤。我们在杰斐逊起草的《独立宣言》中看到的，“人人生而平等”之类“不言而喻的真理”，就源自犹太人的《圣经》和“一神思想”。</p><p>以色列的软实力，是以色列吸引美国做他的“盟友”的隐形资源。倘若没有美国的帮助，以色列复国之路可能就没有那么平坦了。</p><p>1947年，托管巴勒斯坦地区的英国政府，将犹太人和阿拉伯人的冲突，提交到联合国。在美国的支持下，犹太人展开技艺娴熟的外交攻势，博得世界人民对犹太人因为没有家园而被纳粹屠杀的同情，终于在联合国特别会议上，以三分之二多数票，赢得犹太民族建立自己国家的合法权利。</p><p>20年过后，美国最高法院作出一项举世震惊的裁决：美国犹太人拥有以色列国籍，美国犹太人可以加入以色列国防军参战。一位中东问题专家说，没有意识形态和政治价值的亲近感，这一切可能都不会发生。<br /></p></p>]]>
				</description>
				<guid isPermaLink="false">
					6164053@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-03-15  22:34</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[创业家10门必修课]]>
				</title>
				<link>http://sanecat.bokee.com/6155847.html</link>
				<description>
					<![CDATA[<p><table cellspacing="0" cellpadding="0" width="390" border="0"><tbody><tr><td class="storyTitle" id="storyTitle">创业家10门必修课</td></tr><tr><td>&nbsp;</td></tr><tr><td class="textGray" id="byLine">作者：安妮塔&#8226;罗迪克夫人(Dame Anita Roddick)</td></tr><tr><td class="textGray" id="dateLine">2006年11月20日&nbsp;星期一</td></tr><tr><td height="20">&nbsp;</td></tr><tr><td id="contentData" style="PADDING-RIGHT: 2px; PADDING-LEFT: 5px" valign="top"><table cellspacing="0" cellpadding="0" align="left" border="0"><tbody><tr><td style="PADDING-RIGHT: 10px" align="right"><img height="130" src="http://www.ftchinese.com/ftimages/000001091/1.jpg" width="130" /> </td></tr></tbody></table><!--<p id="contentBodyFirst" class="stroyContentHighlight"></p>--><div class="storyContent" id="ContentBody"><p>我从未读过商学院。我读的是生活这个商学院。从年纪很小时，我就这么做了。我在一个意大利移民家庭长大，而家里的职业道德近乎是要像奴隶一样去劳作。</p>　　 <p>我们每天早晨5点起床，在我们位于利特尔汉普顿的咖啡馆为当地渔民准备早餐，直到晚上最后一名顾客慢悠悠走回家后，咖啡馆才会关门。而其它咖啡馆都是早9点开门，晚5点关门。这让我明白了为何一些人能够成为企业家而其他人却不能。我们咖啡馆的所有者是意志非常坚定的移民；其它咖啡馆的所有者则不是。</p>　　 <p>这种差别很重要，我之所以不建议新兴创业者首先去学MBA的课程，是因为商学院并不理解这一点。人们对新兴创业者传统的建议是，他们应该把自己打扮成西装革履的杰出人物，并要沉醉于银行经理钟爱的数据表格。</p><p /><p /> <p>实际上，可能成为创业者的人都是外部人士。他们把事物想象成可能会有的样子，而非现在的样子，而且具备一种改变世界的动力。这些素质都是商学院不教的东西。MBA课程可以教给你应用于商业活动中的有用技能。然而，它们不会教给你最重要的事情：如何成为一名创业者。它们可能还会逐渐耗尽你具有的创业才能，因为它们强迫你进入一种名为MBA通行证的模版。</p>　　 <p>我经常被邀请讨论关于创业精神的话题——连哈佛(Harvard)和斯坦福(Stanford)这样的名校都邀请过我——然而我不相信这是一个可以教的科目。你如何讲授着迷？因为驱动一位创业者梦想的因素通常是着迷。如果你本身不是一个外部人士，你又怎样学习成为一个外部人士？</p>　　 <p>在商学院的模式中，创业者善于制定资产负债表、现金流预测和商业计划。他们梦想着盈利预测，并期盼着公司上市的那一天。这仅是重新设想世界的工具箱的一部分：它们不是创业者的代表性特点。商学院的问题在于，它们受控于并迷恋于事物的现状。它们鼓励你更深入事物的现状。它们会把你改造成为一个更好的企业人的范例。我们确实需要优秀的管理和金融技能，但我们也需要富有想象力的人。</p>　　 <p>因此，除了商学院教授的课程以外，这里还有10门需要创业者学习的课程。</p>　　 <p>&#8226; 讲故事。用不同的方法想象世界，并与他人分享这种远景的重要工具不是会计学。这更多的与讲故事的能力有关。讲故事强调的是你和你的公司的不同之处。而商学院强调的则是循规蹈矩。</p>　　 <p>&#8226; 关注创造力。对于任何一位创业者而言，将创造力最大化和营造一个鼓励人们提出创意的氛围是很关键的。这意味着要建立开放的结构，这样才能对公认的思维发出挑战。</p>　　 <p>&#8226; 成为一位善抓机会的搜集者。当创业者沿着街道行走时，他们会展开联想，看看他们所看到的东西如何能与他们所做的事情联系起来。它可能是包装、一个词汇、一首诗或不同行业的某些东西。</p>　　 <p>&#8226; 根据乐趣和创造力来衡量公司。商学院着迷于衡量。结果是精于计算的毕业生相当多，但往往在业绩上进展甚微。在公司或其它地方，最重要的因素是不可数量化的。</p>　　 <p>&#8226; 做到与众不同，但看上去可靠。如果你与众不同，你将脱颖而出。但不要在那些可以区分成功与失败的人身上冒险，尤其是如果你是一位试图从银行贷款的女性---这就是我最初被拒贷的原因。</p>　　 <p>&#8226; 对创意充满激情。创业者希望自己创造的生计是源自于他们所着迷的创意；不一定是企业，而是生计。当单纯的挣钱泯灭了创意以及创意背后的愤怒，你就不再是创业者了。</p>　　 <p>&#8226; 让你自己一直具有愤怒感。不满会促使你希望对此做些事情。如果你不够愤怒，以至不希望新的远景出现，那么寻找新的远景就毫无意义了。</p>　　 <p>&#8226; 让女性因素充分发挥作用。我们所知道的企业都是男人为男人创造的，通常受到军事模式的影响，有复杂的等级界限，并受到独断戒律的控制，难以实行变革。通过创建自己的企业，女性可以挑战这些模式，而且这么做还会受到客户的欢迎。</p>　　 <p>&#8226; 相信自己和自己的直觉。创业精神和疯狂之间有着并不明显的界限。疯狂的人会看到并感觉到别人看不到和感觉不到的东西。然而，你必须相信任何事情都有可能。如果你相信它，你周围的人也会相信它。</p>　　 <p>&#8226; 有自知之明。你不需要清楚每件事情怎么做，但你必须对自己足够诚实，知道你自己不具备的素质。</p>　　 <p>如果不教授以上这些课程，商学院将依然是保持华而不实的现状。</p><i><p>安妮塔&#8226;罗迪克夫人是Body Shop的创始者。</p></i><p>译者/梁艳梅</p>]]>
				</description>
				<guid isPermaLink="false">
					6155847@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-03-11  22:46</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[希拉里，依然深爱克林顿]]>
				</title>
				<link>http://sanecat.bokee.com/6079365.html</link>
				<description>
					<![CDATA[<p><p><span id="BeforView1_lb_content">&nbsp;<font size="2">这篇文章是在google咨询了偶然看见的。我还是倾向于真爱，当然不否认政治原因。总之还是挺为之感动的！</font></span></p><p><span><font size="2">摘自芜湖新闻网：</font></span></p><div align="center"><img src="http://www.whrb.info/Upfiles/NewsPicture/2007-1-30/20071301625343398.jpg" /></div><div align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是2004年11月18日，在美国阿肯色州的小石城，美国前总统克林顿与妻子希拉里（右）在克林顿总统图书馆开放仪式上亲吻。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 新华社 发</div><div align="left">&nbsp;</div><div>希拉里宣布，将参加2008年美国总统竞选。有人说，她是“天鹅绒铁拳”，并说她的婚姻是赤裸裸的政治联姻。其实，老辣的行事风格背后，希拉里也有一颗女人心。<br /><strong>“我们至少应该互相认识一下。我叫希拉里，你叫什么？”</strong> <br />1969至1973年，希拉里在耶鲁大学攻读法学博士。在这里，一个风流潇洒，颇具领袖气质的年轻人吸引了她。 <br />希拉里第一次注意到克林顿时，他站在一圈人中，大声说：“喂，你们知道吗？我们那儿出产世界最大的西瓜。”朋友告诉希拉里：“那个吹牛的，就是比尔·克林顿，他总说家乡阿肯色好。”希拉里抬眼一瞄，小伙子留着络腮胡。 <br />一天，克林顿在图书馆与教授谈话，眼睛却被走廊另一头看书的美女深深吸引。忽然，美女合上了书，径直走到克林顿面前：“如果你打算一直盯着我，我也要回盯你。我想，我们至少应该互相认识一下。我叫希拉里，你叫什么？” <br />从此，两个活跃的学生领袖陷入了热恋。他们一同参加政治活动，一起反思各种社会现象，共同的理想让他们始终手拉手站在一起。 <br /><strong>克林顿深情款款地跪下求婚，但希拉里拒绝了他 <br /></strong>博士毕业后，克林顿立志要回到家乡、美国倒数第二穷的阿肯色州，他希望希拉里跟他一起去。但希拉里也有自己的抱负。为了打动希拉里，当时还是个穷学生的克林顿倾尽所有请希拉里到欧洲旅游。英格兰湖边，克林顿深情款款地跪下求婚，但希拉里还是拒绝了他。 <br />此后，克林顿回家乡大学教书；希拉里去了华盛顿，在国会里参与调查“水门”事件。两人只偶尔小聚。 <br />很快，克林顿在阿肯色州崭露头角。不知是厌倦了华盛顿的尔虞我诈，还是承受不住相思之苦，希拉里放弃了东部的优越生活，搬到了恋人身边。<br />刚出机场，克林顿就给了希拉里一个惊喜。他把她带到一幢房子边，希拉里曾偶然说过很喜欢那房子，没想到克林顿竟真把房子买下来送给她。1975年，希拉里和克林顿在这幢房子里，成立了家庭。<br /><strong>她把深色的头发染成金黄，又摘掉了近视镜，换上隐形眼镜 <br /></strong>1979年，克林顿就任阿肯色州州长，希拉里也成了州长夫人。 <br />在保守色彩浓厚的阿肯色，希拉里没有得到当地人的认可。她行事干脆利落，却被看作是咄咄逼人、缺乏女性特质。最要命的是，希拉里婚后，一直没有把姓氏改为克林顿，坚持自己是“希拉里·罗德姆”。这事曾把克林顿的母亲气得落泪，后来甚至影响到了克林顿的政治前途。<br />&nbsp;&nbsp;&nbsp;&nbsp; 1980年，克林顿争取连任州长，但许多选民认为他“没有男子气概”，8％的选民甚至表示，只要希拉里保留父姓，他们坚决不选克林顿。 <br />直到克林顿落选，希拉里才让步，不得已把姓氏改成了“克林顿”。此后，她还对自己进行了“包装”：把深色的头发染成金黄，又摘掉了近视镜，换上隐形眼镜。人们惊奇地发现，作风硬朗的希拉里身上多了端庄、温柔的女性美。 <br />希拉里的改变得到了认可。1982年，她帮助克林顿重夺州长宝座。 <br /><strong>“我爱我的丈夫，并为他做的适合我们做的事感到荣耀”</strong> <br />1992年，克林顿竞选美国总统。希拉里同样发挥了重要作用。她先是进一步完善形象，请专业美发师设计了招牌式的短发。她美丽的形象、优雅的气质，以及机智幽默的谈吐，使选民为之倾倒。当然，希拉里本身也是位卓越的政治家，除了漂亮的外形，她也在背后实实在在地给克林顿出了不少主意。克林顿对此很得意，他宣称选他是“买一送一”，选民不仅可以得到他本人的服务，而且还可以得到一位美丽聪慧又有政治头脑的第一夫人。 <br />克林顿风流成性，竞选中，希拉里以她的宽容让美国人原谅了她出轨的丈夫。一次电视采访中，克林顿被问及婚外情问题，一旁的希拉里主动帮他解围：“我爱我的丈夫，并为他做的适合我们做的事感到荣耀。” <br />克林顿顺利当选后，他公开表达对希拉里的感谢。当集会的人群开始欢呼希拉里的名字时，克林顿高兴地说：“你们可以为她欢呼！”在美国历史上，民众第一次为总统配偶欢呼。 <br /><strong>希拉里原谅了克林顿，因为他是丈夫，也是总统</strong> <br />在白宫的8年，希拉里并不快乐。她说，克林顿承认跟莱温斯基有染，是她“一生中最艰难、最可怕和最伤心的时刻。”“比尔的背叛导致我的私人情感与政治理念激烈交锋。”希拉里原谅了克林顿，因为他是丈夫，也是总统。 <br />离开白宫后，克林顿出书、演讲赚钱，担负起养家的责任，让希拉里免除后顾之忧。如今希拉里宣布要参选下任美国总统，很多美国人都认为，克林顿应该投桃报李好好回报妻子，“现在要看比尔的了”。</div><div></div><div>周鑫宇&nbsp; 武毅秀</div></p>]]>
				</description>
				<guid isPermaLink="false">
					6079365@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-01-30  21:43</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[推荐一篇文章——有关马克思的]]>
				</title>
				<link>http://sanecat.bokee.com/6028172.html</link>
				<description>
					<![CDATA[<p><table cellspacing="0" cellpadding="0" width="390" border="0"><tbody><tr><td class="storyTitle" id="storyTitle"><p>这片文章是从FT中文网看的〉〉〉〉〉〉〉〉〉〉〉〉</p><p>马克思的幽灵又回来了</p></td></tr><tr><td>&nbsp;</td></tr><tr><td class="textGray" id="byLine">作者：英国《金融时报》约翰&#8226;桑希尔(John Thornhill)</td></tr><tr><td class="textGray" id="dateLine">2007年1月5日&nbsp;星期五</td></tr><tr><td height="20">&nbsp;</td></tr><tr><td id="contentData" style="PADDING-RIGHT: 2px; PADDING-LEFT: 5px" valign="top"><table cellspacing="0" cellpadding="0" align="left" border="0"><tbody><tr><td style="PADDING-RIGHT: 10px" align="right"><img height="130" src="http://www.ftchinese.com/ftimages/000003967/1.jpg" width="130" /> </td></tr></tbody></table><p class="stroyContentHighlight" id="contentBodyFirst"><font size="2">消除一种过时的思想需要什么条件？</font></p><div class="storyContent" id="ContentBody"><p><font size="2">也许有人认为，几十年来的实践，会使多数观察人士确信，共产主义是一种可怕的信条，在经济上不是最佳选择。即便是共产主义最狂热的支持者，也难以反驳这种观点，即共产主义显然未能实现其创立者乌托邦式的期望。</font></p><p><font size="2">一群法国学者1997年出版的《共产主义黑皮书》(Black Book of Communism)认为，共产党政权应为20世纪对近1亿人的“种族屠杀”负责。约瑟夫&#8226;斯大林(Joseph Stalin)的拥护者过去常常以“不打破鸡蛋就不能做煎蛋”，来为这种残忍行径辩护。但乔治&#8226;奥威尔(George Orwell)有一句著名的反驳之词：煎蛋在哪儿？</font></p></div></td></tr></tbody></table><p><table cellspacing="0" cellpadding="0" width="390" border="0"><tbody><tr><td id="contentData" style="PADDING-RIGHT: 2px; PADDING-LEFT: 5px" valign="top"><div class="storyContent" id="ContentBody"><p><font size="2">莱斯泽克&#8226;克拉科夫斯基(Leszek Kolakowski)是世界最早的马克斯主义学生之一，也是一名马克思主义评论家。他认为，他早在1974年就埋葬了共产主义信念。他在《社会主义记录》(Socialist Register)上发表的一封谴责性公开信中写道：“共产主义发明的唯一一剂药——中央集权、不受社会调控、国家拥有国民财富、一党统治——比它打算治疗的疾病更糟糕。”他认为，共产主义理念永远不可能加以修正或振复兴，他总结道：“马克思如果九泉有知，他再也不会欣然而笑的。”</font></p><p><font size="2">中国在80年代转向资本主义，将其作为促进繁荣的最佳手段，苏联在1991年解体，这些似乎都证实了克拉科夫斯基的观点。在贫困的平壤和哈瓦那，迄今仍有共产主义的顽固分子，但他们不能成为马克思主义信念活力的明证。</font></p><p><font size="2">不过在欧洲，卡尔&#8226;马克思(Karl Marx)的嘴角似乎又咧开了，因为这里出现令思想恢复活力的新尝试。马克思的现代支持者们宣称，马克思不应为那些按其（通常是矛盾的）分析行事的人负责。此外，将马克思主义理论等同于共产主义实践也是错误的。正如马克思本人所称，他不是马克思主义者。他们声称，将以马克思之名行的过分之举归咎于马克思，是不公平的，这就像是将西班牙宗教裁判所的恶行归咎于耶稣一样。</font></p><p><font size="2">在许多方面，新一轮全球化浪潮会使人回想起马克思生活的时代，这无疑已使人们对马克思之资本主义批判的兴趣重燃。全球化或许正使成百上千万人脱离赤贫，但也造成了相对富有者的惊人差异。根据一份联合国(UN)报告最近的估计，全球2%最富有的成年人，拥有全球逾50%的财富，而50%最贫穷的人，仅拥有全球1%的财富。怎么会是这样？没有《资本论》(Das Kapital)，一个人怎能理解资本？</font></p><p><font size="2">为马克思立传的英国作家弗朗西斯&#8226;惠恩(Francis Wheen)在最近一篇有关《资本论》的文章中总结道：“马克思并未被埋葬在柏林墙的瓦砾之下，他真正的重要性也许现在才刚开始显现。他可能会成为21世纪最具影响力的思想家。”</font></p><p><font size="2">在去年进行的一次广播民意测验中，雄辩的惠恩甚至劝说英国广播公司(BBC)的听众，称马克思是历史上最重要的哲学家。</font></p><p><font size="2">在英吉利海峡的另一边，马克思从未真正过时——即便马克思主义已成为政客们本能的语言反应，而非有意义的行动纲领。</font></p><p><font size="2">中立党派法兰西民主联盟(UDF party)的党魁弗朗索瓦&#8226;贝鲁(Fran?ois Bayrou)辩称，法国左翼从未完全脱离马克思主义。只要回顾一下2002年的总统选举就知道了。当时，互相竞争的两位托洛茨基主义(Trotskyist)候选人——法国共产党(Communist party of France)和革命共产主义同盟(Revolutionary Communist Leagu)的领导人——在第一轮共获得了17%的选票。</font></p><p><font size="2">法国主流政治家在今年总统选举之前说的多数言辞，明显都带有一丝马克思主义的意味。</font></p><p><font size="2">反对党派社会党的总统候选人塞戈莱纳&#8226;罗亚尔(Ségolène Royal)不断谈到需要重新平衡劳资关系，声称她的目的就是要“吓住资本家”。就连表面上中间偏右的执政党——人民运动联盟(UMP)的总统竞选人尼古拉&#8226;萨科奇(Nicolas Sarkozy)，都在指责那些“流氓老板”，这些老板一边给自己发放巨额奖金、一边把工作转移到海外。</font></p><p><font size="2">一位著名的社会主义政治家表示，在法国和其它发达国家，新的阶级分界线，是在富人（包括多数法国人）和超级富豪之间。</font></p><p><font size="2">这些由金融家、实业家和决策者组成的全球化新“贵”阶层如今在全球宣讲着“市场基要主义”。这个阶层的成员对彼此的忠诚比对任何民族国家都更高。他们一边告诉自己的雇员工作没有安全感、福利待遇减少和工资水平下降就是现代社会的状况，一边却装备好“黄金降落伞”（译注：指合同规定高层雇员因公司被收购而遭解职时可获得一大笔钱的福利），以免自己遭遇失败。</font></p><p><font size="2">渊博的法国金融家雅克&#8226;阿塔利(Jacques Attali)也在忙着提高马克思的声誉，把他奉为我们全球化时代的预言家。在最近出版的一本马克思传记中，阿塔利指出，这位19世纪的哲学家仍然有很多东西可以教给我们，如资本主义的本质、现代化对传统社会的冲击、竞争性个人主义的出现，还有不安全感的蔓延。</font></p><p><font size="2">阿塔利认为，马克思回答了人们只有在当下才会问出的问题。只有在我们这个时代，我们才能看到马克思的真实面目，不会因为他与共产主义实践的联系而受到妨碍。</font></p><p><font size="2">然而，马克思一定会对自己的新定位感到恼火，他被当作了我们时代的分析师，而不是革命性变革的鼓吹者。他曾写道：“哲学家只是用不同的方式解释世界，而问题在于改变世界。”</font></p><p><font size="2">马克思如果在天有灵，皱眉的时候可能会多于微笑的时候。</font></p><p><strong><font color="#993333">译者/何黎</font></strong></p>]]>
				</description>
				<guid isPermaLink="false">
					6028172@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-01-8  23:35</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[第一次跳肚皮舞]]>
				</title>
				<link>http://sanecat.bokee.com/6023262.html</link>
				<description>
					<![CDATA[<p><p>今天是继前天后的第二次去奥都健身俱乐部健身；今天跳肚皮舞啦，也是我第一次跳肚皮舞。呵呵，全场的学员都是女的，男士仅我一人。老师是一位长得还不错的女孩，黑色的长裙缀满了金光闪闪的金属链牌，金色的高跟鞋，腰上一根红色挂绳，和长裙相映显得腰很好看。其实老师的腰并不是很细的那种，而且我估计，太细的腰也跳不了肚皮舞——没肌肉！</p><p>肚皮舞课七点十分正式开始，我能注意到当我进体操房时众人对我的稍加注目，不过没产生什么骚动，嘿嘿。老师跳的果然是好，腰摆起来十分有力而优雅，而且整个身躯也随着偏偏起舞，裙摆翻飞，铃铛有节奏的响做一团。好啊！</p><p>学员的面前是一面全部镶了镜子的墙，大家都可以看见自己的动作，确切的说我可以看到自己的笨拙，不过老师还是在某一个动作上表扬了我的。哈哈。前面的基本动作还行，后半节课开始有连续的动作了，我让老师教慢些，老师说现在都教了3个月了，大部分是老学员，所以就不能太照顾新人了。于是，后半节课基本就是我的艰难期了。可怜啊！不过没关系，本人脸皮厚，而且心态好。不过说实话，的确还是很锻炼腰部的，对于我的肚子来说是极好的锻炼和考验，可以起到收腹作用的。我的确感觉到右边肚子上的一根筋有点痛——嗯，起到锻炼作用了。</p><p>八点，课程结束，有一点值得津津乐道——我是第一个去跳肚皮舞的男士（这点我早就料到），并得到了老师的欢迎！</p></p>]]>
				</description>
				<guid isPermaLink="false">
					6023262@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-01-6  23:56</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[已锁定]]>
				</title>
				<link>http://sanecat.bokee.com/6011573.html</link>
				<description>
					<![CDATA[<p>此日志的浏览权限已被作者锁定，联系作者请<a href='javascript:void(0);' onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=45918','发送短消息','width=520, height=455')"><strong>发送短消息</strong></a>，如果你的身份符合作者的要求，<a href='http://publishblog.blogchina.com/blog/diary.b?diaryID=6011573&blogID=43250'><strong>点击此处</strong></a>可以进行浏览</p>]]>
				</description>
				<guid isPermaLink="false">
					6011573@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2007-01-2  19:34</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[出差盐城]]>
				</title>
				<link>http://sanecat.bokee.com/5163052.html</link>
				<description>
					<![CDATA[<p><p>5/30 6:30<br />火车晚点了，不过从现能在看来在阳光明媚的早晨欣赏江南的初夏风景倒是件宜人的美事。<br />江南的平原和北方的不同，这是我初次看到所得到的体会。江南的平原也是沃野良田，不同在于行行浓密的乔木把这千里平原分割成小块的田地，每块都有其可爱的造型——嫩黄的铺盖和翠绿的边幅。而经常的，也能看到许多和田地差不多大小的池塘，池塘中央或者边上是我非常喜欢的水草和青芦苇。静谧的田野、池塘，仿佛又让我闻到了那就别十多年的乡野味到！啊，真相打开车窗让这诱人的芳草味扑入我鼻。啊，真相现在就下车，拥抱这田野多时才肯离去！</p><p>这次出差目的地是江苏盐城，任务嘛，还是处理莫名其妙的问题。不知道这回要多久才能返回。火车上播放的音乐倒是还挺合适，让我精神焕发。昨天晚上可能9点就睡了，到今儿早6点才起，睡得我腰都有点酸了。</p><p>快到盐城了，列车广播让大家做准备下车了。呵呵，那我也不再这里耽误时间了。</p><p>5/30 9:21<br />现在在事故现场，是个新开发的小区，房子外表看还不错，很多人家还在装修没入住呢。我们的设备在每个单元里都有，国新到我到的是移一栋楼二单元门口里面的楼门洞里，挨着墙打开一个网通的机仓盖。哦 ，看到了，艰苦啊！我们的设备和华为的一台白色交换机就这么悬在里面。<br />国新去买电源插座了，我开始准备东西。坐在哪里呢？看来只能铺张报纸的倚墙席地了。背还真的有点凉，估计时间长了会半身不遂。没办法，希望能尽快找到问题所在。</p><p>5/30 11:42<br />在ICMP_Send_Echo_Request的NU_Obtain_Semaphore (&amp;TCP_Resource, NU_SUSPEND);程序死掉。</p><p>5/30 6:00<br />下午没去现场，在宾馆研究代码，坐了一下午。对PPPOE代码初次深入一下，改了两个地方。准备第二天到现场测试看看结果如何。感觉应该在释放ppp连接的时候先要获得一个semaphore;另外在断开连接的时候加了一句话让pppoe发送terminate request。</p><p>5/31 11:30<br />把昨天改的代码测试了一下，发送terminate request的目的达到了。可是添加的获得semaphore的语句在获得semaphore时失败了。想起昨天看log有关于snmp的错误，于是便索性把snmp关掉，结果发现现在的代码在重新获得ip地址后没有死机的情况了。原来是在获得代码后设备没稳定时snmp的参数没有更新，就使用网络操作导致设备死机的。向北京汇报了一下情况，去吃饭！看来周末有望回去了。</p><p>5/31 22:10<br />snmp的代码以前从来没看过，ip地址变化后系统从哪里发送的snmp消息还真是半天没找到。打电话问刘浩，告诉我snmp都是调用udpsend发送出来的。可后来发现从upsend改还是不行，发送snmp的socket是在snmp任务初始化的时候就建立了，ip变化后没有重新帮定。于是在snmp task的while循环里加了对ip地址变化的判断和处理，主要是重新邦定了ip和设置了udplistener。这样的改动在策略上应该是没错的，关键是程序处理是否没问题。看明天的测试结果吧。</p><p>6/1 9:26<br />今天是儿童节了，8点半起床。不知道是在现场地上坐的凉了肚子还是昨天晚饭吃了什么不好的东东，虽然没觉得肚子疼，不过往便池上一坐就开始“排水”。怎一个磅礴了得！现在想来可谓一泻千里。<br />给刘浩打了电话，征求了一下修改意见，有添了两行代码，准备去机房试试。现在出发！</p><p>6/1 16:00<br />在盐城网通的中心机房呆了一天，真是受罪，空调风大，噪音也大的过分。不过修改的代码基本还是奏效的，只是pppoeipchange的消息变量pppipchanged已经给sip初始化用了，在sip初始化完后又要将pppipchanged变量恢复。于是只好在ppp在此拨号成功，即ip变化的时候再添加一个新的变量snmpipchanged专门让snmp程序使用。从这点可以看出，snmp和sip程序都是使用网络的两个应用程序，在系统中处于平等关系。<br />因为xsnmp_task的优先级是3，比较低，而发送trap消息的优先级比较高，所以利用这个常驻程序完成snmp的ip地址重新绑定的工作显然无法进行。所以把重新绑定ip的工作放到了ifsendto里，当snmpipchanged==true时，就做重新绑定，然后将snmpipchanged置false。<br />还算比较成功，不过还有一些小疑问，回北京在仔细研究一下。</p><p>6/2 11:50<br />今天的主要任务就是给盐城这边的设备升级，上午升了4台，现在回网通了，打算用先扫描网段查找设备，然后用远程登录的方式逐台升级，这样就不用坐车满城跑了。他们的设备还真是分布广泛，星罗棋布。</p><p>6/4 13:43<br />今天周日，现在已经在徐州的云龙山宾馆了。昨天基本无事，最大的变化就是离开盐城，乘车来到徐州。比较见鬼的是没赶上大巴，坐了个又破又慢的中巴，不到400公里的路程居然开了6个小时。徐州这边的DHCP问题似乎也比较严重，都好几个礼拜了，所以上边才安排拐道徐州。天气还是比较热的，所以就呆在宾馆里上网、写工程报告了。<br />昨天晚饭吃的时四川芙蓉火锅，价格偏贵，结果两人正好吃了99！嘿嘿，正好在标准100元边上。真是水平高啊。不过不幸的是，刘国新今天拉肚子了，呵呵。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					5163052@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-06-4  14:14</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[数据结构该复习了]]>
				</title>
				<link>http://sanecat.bokee.com/4556460.html</link>
				<description>
					<![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天晚上做了电话面试，当然是我被别人。关于编程和数据结构的题都比较吃力，尤其是数据结构的问题，居然发了愣！结束了回想一下，其实也不至于瞠目，搁去年9月的时候，真不是什么难题。还是不熟练，需要多花时间。唉，看来东西不用就生锈，本事不练就长毛啊！真是惭愧的很，C/C++要继续学，数据结构没事还得温着。</p>]]>
				</description>
				<guid isPermaLink="false">
					4556460@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-02-27  22:54</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[活着就有事要做]]>
				</title>
				<link>http://sanecat.bokee.com/4556383.html</link>
				<description>
					<![CDATA[<p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 写第一个字的时候，屏幕右下角的时钟刚好走了1秒——完成了从2月19日到20日的跨越。基本上刚刚好，刚刚好一个月的时间，我才有闲情雅致，有歌曲陪伴、有安静的夜晚衬托着这样的心情去完成过去一个月的回味！<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 过去的一个月，也可以说是不寻常的一个月，因为至少是有春节，塞入了整整四分之一的懒散。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 陈好唱的如何，从网上在线播放的歌曲还听不出来，不过，至少这首歌还比较适合现在的感觉。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天去教育展了，在国贸展厅，学校还真不少，我跟朱迪逛了两三个小时，终于在确定所有可能学校都扫荡两遍后才拎着一堆资料，饥肠辘辘的原路返回。还是有个总体结论的：雅斯还要继续考！目标6.5！其实要是今年走的话，还是有一个比较好的学校可去的（UCE Birmingham，伯明翰中央英格兰大学音乐学院）。想到要离开1年，虽然此事情还八字没一撇，可还是不太自在。一种淡淡的遗憾？不舍？失落？嫉妒？不情愿？……我也不知道此心境该用什么表达。自己一个人看电视、吃串、喝点啤酒还是有所谓的。后来她发短信说决定再加强一下英语，在北京找个好的声乐老师提高一点专业水平再走，也好寻个一流的大学，对得起父母的教育投资。哎……总之今天，此事到此。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 软件体系结构的作业终于在昨天晚上9点半完成了。历时也有一个月了吧，总是没有抽出大块的时间，直到昨天才用了连续的五六个小时打了最后一仗，也算辉煌。哈哈哈！不过可恶的是，就在这两天里，前后有两个烂人（同学）打电话要我的作业，显然就是打算抄袭嘛。真是讨厌至极！<br />（后面的是几天之后续上的：）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 结果周一我请假到学校去交作业、选课，才发现，软件体系结构这门课的分数都出来了！唉，可怜我这许多日子的辛苦磨练啊。不过到老师办公室交作业，发现老师还是比较仔细的看每个同学的作业，得到些安慰，至少还是能跟老师交流一下的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上个月还有一件大事，就是一次投入了一万多CNY去发烧的买了一个未来5年承诺的旅游住店钱。呵呵。事后想想是有点吃多，不过也算给自己一个活的舒服的理由：人，乘年轻跑得动，要出去玩！另外的结论就是：我果然是个老虎性格的人，经常做一些容易小悔一把的事。也学到点东西，就是人家的营销手段，果然是厉害啊，正打我这种急性子的人。知道朱迪说我什么么？“你疯啦！二百扯子”呵呵，不过想来还是挺幸福的，至少有人陪出去玩。而且我们全家也因为我的歪打，而做出了明年春节去海南三亚过的正招！呵呵。不赖！<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在台联工作整整五个月了，第一天上班是九月26号，星期一。今天则是第二年的二月27号，也是一周的开始。这两天正在处理一个我们IAD的问题，不大不小。我们的呼叫转移流程和RFC定义的有点不同，转移电话的被角方，就是final receiver接到的是两个不同的电话，第一个被第一方提前挂断了。虽然不影响通话，可还是不合规矩。改吧！才发现原有程序为了实现起来简单，好像是故意这么做的，这样而来对我的难度就加大了。不过总之经理要我周末完成是没问题的了，又是UT要的东西。大客户，不能怠慢啊。其实这么一段时间以来，工作任务主要就是把各地测试出来的BUG改过来，也学了不少东西，而且发现不少编程基础有所松懈，需要巩固。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个学期20号就算是正式开学了，上周一正是二十号，我下午请假去的学校选课。终于把学分修的差不多，可以开始工程实践了。所以选了最后两门周日上午的随意选修课，这样也不至于把真个周末的时间都搭进去。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					4556383@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-02-27  22:46</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[长征——把酸奶打了]]>
				</title>
				<link>http://sanecat.bokee.com/4277189.html</link>
				<description>
					<![CDATA[<p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;新年过了？新年来了？</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好像时间过的越来越快了，而我这学期的考试终于在上个礼拜的周末结束。电子商务的论文是在那个周末后的星期二（1月10号）中午才写完E_mail给电子商务老师的，一上午主要是用VISO画了两个架构图。呵呵，时间真的比较紧，要不是省略了很多东西，肯定还得拖个三四天——那样的话，这门课就没成绩喽。原来认认真真自己完成作业这么辛苦啊，连着熬了两个晚上，都是3点钟才睡得。所以，呵呵，交了作业第二天开始，似乎没了动力，整个人都没心情和力量了。看文档都觉得头大，干脆，周三我请了一天假。与其这样痛苦着不能工作，还不如离弃一天放松自我！</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在可以有时间写点东西了，想想自上次贴文过来整整两个月，自己都干了些什么呢？工作上的事情看周报就可以了，足以了解的清清楚楚（脑子里突然念头，要不要以后把周报也放到这里以示我还活着？呵呵，可怜啊！）。可生活呢，还有就是应付每周末的课程、可以偷懒却狠不下心来的作业、本学期结束前的一堆考试和课程论文。从来没有感到疲惫，只有这两个月。看来分心做这么多重要的事情还是不容易啊。睡觉似乎成了每天最甜美的事情！哎，好久没看电影了，馋啊！<br />（已经是两天以后的星期日中午了，继续。）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终于看电影了，连着两天晚上。LOST更新到第二季第11集。others终于以正式和集体的方式出现，看来情节有突转的迹象。<br />现在该做什么呢？原来闲下来也不是太容易的事情。先看看《软件构架实践》吧，补充些理论和背景知识，软件体系结构还有一个期末设计没做呢。虽然是下学期开学交，不过还是早点完成的好。<br />（晚上十点钟）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 呵呵。这是我有史以来耗时最长的“日记”了，五点多出发去西单图书大厦到现在才又坐回到电脑前。和以前不同，这回去那里不是为了看专业方面的书了，一楼大厅的社科类书籍才是寻宝的目标。其实也不是想买，一是不一定后空去看；二是在那里买书是比较奢侈的行为——我有chinapub的五星级会员资格，自然喜欢在网上买了。去书店是因为它更真实，可读！一直以来我都在考虑一个问题，除了技术，我还能做什么？其实我能做的还很多。那么我该选择什么？是我选择机会还是机会选择我？我不是有耐心，做在那里等待的人。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 想起了上周末公司的人力资源培训。P.D.P告诉我自己是个“会说话的老虎”。我很喜欢自己的性格——不管是否用“会说话的老虎”来比喻。可同时也知道了自己性格的弱点——缺乏耐心，感性太强。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在书店翻了不少书，也一边想了实际的问题。第一：先要把学业修完，平时好好工作，提高专业技能。第二：不能着急，后面的一年时间还应该把主要业余时间用来提高英语水平上。第三：需要提高自己的做事能力，养成好的习惯。第四：注意环境变化，扩展知识面。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 喝口酸奶——插曲：坐下来之前把刚买的袋装酸奶掉地上了，见鬼的包装真烂，居然裂口子，撒了不少。还浪费我10分钟的精力去打扫干净。可惜啊。</p><p /></p>]]>
				</description>
				<guid isPermaLink="false">
					4277189@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2006-01-22  23:23</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[看动物世界有感]]>
				</title>
				<link>http://sanecat.bokee.com/3801668.html</link>
				<description>
					<![CDATA[<p>&nbsp;<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">对知识的渴求是因为生存的需要。</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">对知识的尊重源于对生命的赞美。</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">盗版和正版。</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1" /><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">我看盗版，因为我没钱。我在读书，因为我生活。估计我不会去非洲草原做一个观察20年狮子的科学家，也许是我不热爱，也许是我做不了科学家。但我现在可以给自己的答案会很直白——那样的工作会让我饿肚子。</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1" /><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">希望，有一天可以选择，选择更多的尝试。勇气，和自由！</p></p>]]>
				</description>
				<guid isPermaLink="false">
					3801668@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-12-7  17:40</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[有朋自远方来]]>
				</title>
				<link>http://sanecat.bokee.com/3801576.html</link>
				<description>
					<![CDATA[<p>&nbsp;<p style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><span lang="ZH-CN" style="FONT-FAMILY: SimSun">&nbsp;&nbsp;&nbsp; 昨天杨志来了！从大老远的成都——我们一起读大学的地方，来北京出差！真是有朋自远方来啊。大四的一年都是和他住在一起的，学校后面租的房子，单间，不贵，每才</span><span lang="EN-US" style="FONT-FAMILY: Verdana">130</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">元。那个地方全是农民盖的小楼，专门出租给我们学校学生的，生意很好，服务也多。所也我们也得以在屋子里就能上网。嘿嘿。</span></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><span lang="ZH-CN" style="FONT-FAMILY: SimSun">&nbsp;&nbsp;&nbsp; 晚上当然是在一起吃喽。喝了点啤酒。哎呀！真怀念大学的时光啊，尤其是大四时候。自由自在的生活，中午一边看球塞一边吃饭，晚上还联网打游戏。我比较懒，而且总有事情做，看书，编程，做作业。所以从网上</span><span lang="EN-US" style="FONT-FAMILY: Verdana">down</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">歌的事情都是他做了。呵呵。那时还总能看片子，都是最新的。总之生活很自在也充实。</span></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;&nbsp;&nbsp; 成都的天气很好，晴天很多，湿润。夏天也有热的时候，不过学校后边有大片的鱼塘、农田和很大很大的空地，不知为什么那么大地地方会很少有人。远方还时不时看见火车驶过。傍晚我们可以吃两面，喝绿豆稀饭，水果也很便宜。</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;&nbsp; 想想现在的工作和学习，压力真实存在……</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;&nbsp;&nbsp;为什么回忆总是怅惘，在那阳光灿烂的日子，做着阳光灿烂的事情，洋溢着阳光灿烂的笑容，挥洒阳光灿烂的汗水，释放阳光灿烂的爱……</p></p>]]>
				</description>
				<guid isPermaLink="false">
					3801576@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-12-7  17:32</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[终于做月结了]]>
				</title>
				<link>http://sanecat.bokee.com/3619795.html</link>
				<description>
					<![CDATA[<p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终于又一个人安静下来了，没有打扰，暂时不用去想工作和学习的事情。看看自己的博客，这样的时间上次是十月八日，现在，是十一月20日——周日的下午，电子商务课做实验，动态数据库网页，极致无聊而简单的东西。其实很多东西早就想记录到这里了，过去的自己把这一个多月的事情保存在这里，为了和现在的自己、今后的自己分享。既然过去没有做到，只能现在以月结的方式补上了……</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 已经一个月了，上个月的今天我在长沙，19日晚上六点坐Z17离开北京西站，20日早晨到的。我记得刚进长沙火车站时，我说过自己很失望，因为感觉长沙的车站不应该那样简陋。也许认为毕竟是湖南省会吧，就连一直到进了宾馆，都在不解路上看到的那种并不繁华的街道，并不高大的建筑。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 出差长沙是因为公司在长沙网通的IAD频繁重启，我之所以跟着去是我们头想让我熟悉一下现场，多了解一下实际设备的使用和调试。在长沙呆了一个礼拜，每天8点半去机房盯着设备，等待重启的再次发生，抓包，抓终端信息，分析原因。虽然掌握了现场的一些东西，不过总体来说还是比较无聊的。白天我就在机房里看书，软件体系机构课老师让看的教材，不错，这一周的确给了我很多看书的时间。呵呵！晚上，就只有吃饭、散步、看电视了。值得赞许的是，长沙的地方电视台真是丰富，电影多多，着实解决了晚上的无聊。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说起来吃饭，倒真没什么地方可选的，要省时间，还不能超支。说实话，我倒觉得长沙的饭馆挺贵的，除了鲈鱼比较便宜而且味道不错外，其他的菜似乎都比较贵——难怪这样，湘江水无时无刻不在给长沙提供着吃不完的鱼；长沙人却依然过着甚至一些本地人都觉得畸形的消费生活。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 十月二十二日是周六，自然该是出去游玩的时间了，不巧，下午开始一阵儿一阵儿的细雨蒙蒙，本来计划去橘子洲，结果改成逛步行街了。你还别说，长沙的步行街倒是满热闹的。街头口是黄兴的铜像，背着手显得威武尊严。步行街很长，每隔一段还有一些表征当地特色的雕塑：卖臭豆腐、小孩玩耍、卖酱油的……饶有几分志趣。逛完步行街，感想有两个：第一，此街可比王府井；第二，长沙美女难求也！</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 老天爷总算还是有点良心，23号周日天气放晴！我们两个大男人也都够能走的了，居然从步行街走到了橘子洲头！真够远的了啊，估计得有20里地的路程。在橘子洲岛沿江的路风景不错，水、游艇、小舟、渔船，还有就是围起来或者连成串的货船，场面还是有几分可观！带了照相机，自然就不能闲着了，留影是少不了的，拍些风景便成了时不时停下来的理由。岛上的居民不是很多，房屋破旧简陋，也有那么点隔绝的意味。站在这片几分荒芜的岛上，隔江而望便是繁华的芙蓉区，高楼不密，个三叉五突兀而出，倒是可以用阔气来形容一番了。总之，从这个角度看长沙，感觉还是了不得的。终于从走到橘子洲头了，不过就像听说的，橘子洲头公园封闭了，更加可怕的是据说要封10年！看来这个橘子洲开发要大动干戈了，而这个开发指挥部想必也不是什么办事高效的场所。进不了橘子洲公园不要紧，江边还是可以下的。站在河滩上，紧邻江水，有种被过滤得感觉，记忆还是颇深的。照相、扒水、丢石头，我还粘了一脚的泥。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 中间我回来过一趟，那时本以为查处两个毛病，就应该没什么大问题了，而且我们当时设备不足，我也帮不上什么忙了，自然就先回来了。可谁知，重启原因似乎还不止这些。于是11月4号，我金戈铁马，再赴长沙！这回带了ICE，多带了一个本本，还有就是赴湘之前头教我怎么进行程序监控。这回的周末就是爬岳麓山了。爬山的过程其实并不曲折，都是人工的石阶或柏油。爬到山顶，我们还喝了一瓶“邵阳老窖”。坐于岳麓之颠，望湘水，品邵阳，尽览长沙；谈笑浮云烟绕，踏石级，嗅清泥，此行潇洒。（呵呵！用了五分钟才凑出来的。）下了山，自然是大吃一顿了，至于吃了什么，除了蛇汤、乌鸡汤、龟苓膏外倒不足挂记，“贵”倒是真的。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 出差回北京是11月9号了吧。之后就是走入正轨的软件工作了，代码、文档，文档、代码。这个循环还是在8、9月份才养成的，之前都不太重视文档工作，后来真的发现记忆力是有限的，所以养成了文档、代码形影不离的习惯。现在也感觉正常了，并不会影响工作进度。上周的代码工作主要是完善了一下VENUS的WEB管理界面和功能项。现学现用了CGI和javascript的简单实用，还是有点意思，知道了用CGI是怎么把后台程序的数据时怎么传递到WEB页面上的。这个礼拜过去的两天弄懂了register的全过程代码，修改了状态打印程序，总体来说还算顺利。看来头对我的工作还是比较满意的。嘿嘿，继续努力！</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 哎呀，喝点清茶，听着美妙的音乐，在自己的小屋里写点东西还是蛮爽的！昨天下午离下班还有一个小时了，突然前台小惠告诉大家喝下午茶！原来是总经理请大家。嘿嘿。三明治和咖啡都不错。不放糖的苦咖啡还是挺有品头的，可惜没坚持全部喝完就把奶粉和糖混进取了，就其原因嘛，还是咖啡太少了，万一放了糖和奶的更有味道，岂不是浪费！呵呵，所以前半杯是苦，后半杯是甜——还是有一定人生哲理的嘛！我为什么不去做哲学家呢？也是种遗憾啊！</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说到这里，一个最重要的事情居然忘讲了！我搬进新居了——其实是租的房子，呵呵。只是装修的还不错，木地板、漂亮的衣柜、大冰箱、滚筒洗衣机、新装修的卫生间、高层、同一个大学毕业的同租和同年同月同日生的同租的老婆。嘿嘿，是比较巧！太比较巧了！四川人啊，还算是老乡呢。<br /></p></p>]]>
				</description>
				<guid isPermaLink="false">
					3619795@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-11-23  13:16</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[长假归来——除草]]>
				</title>
				<link>http://sanecat.bokee.com/3161974.html</link>
				<description>
					<![CDATA[<p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天是十月8号，国庆节长假后的第一天上班，呵呵，也是我第二个上班周。看看自己的博客以前的最后一篇文章日期，似乎很遥远的过去了，在这“长长”的两个月里的确发生了不少的事情，这些事情似乎都挺重要的，我不知道是不是转折。</p><p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 昨天晚上10点才回到张波的住处，那是在火车上站了5个小时又在公共汽车里站了1个小时后的终极安慰！就这新鲜的蔬菜汤煮了两包方便面，吃了些蔬菜沙拉，嗯，车厢里积下的憋闷虚火终于消散。23点半，可以洗澡睡觉了！</p><p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在是下午3点46分，之所以在这个时候写记录有两条原因：国庆节放假在家就有给博客除草的计划了；昨天晚上似乎没睡好，这个时候要是再不换换脑精，撇开全英文的SIP协议做些有趣的事情，我肯定会睡着的。</p><p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3号下午才回到家，算一算也没呆几天，睡觉、吃饭、看电视，还有就是看了不到60页书。除了这些外，唯一的成就就是把家里的电脑重装了两遍，让老爸老妈都满意了才算完，直到我走的那天上午才结束，幸好是下午的火车！很遗憾，在车上虽然碰见连个美女，可都接连下车了，相处时间短暂，否则还能攀谈几句，说不定交个朋友还是有可能的呢。呵呵。于是大部分的时间只有看杂志、和张波聊天了。看来身体素质有所下降，记得上次站5个小时没有这回痛苦！锻炼身体哦！！</p><p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我生日应该收到什么礼物呢？真不知道该给猴子什么建议。哎，还是想想再说吧。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					3161974@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-10-8  16:18</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[研究发现：爱情不是由“性”而来 却比性更强烈 ]]>
				</title>
				<link>http://sanecat.bokee.com/2402609.html</link>
				<description>
					<![CDATA[]]>
				</description>
				<guid isPermaLink="false">
					2402609@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-07-27  13:46</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[本周的金蛋- -]]>
				</title>
				<link>http://sanecat.bokee.com/2349528.html</link>
				<description>
					<![CDATA[<p><p>也许这是个好习惯，第二天早上再回忆昨天的趣事，这比睡觉前想要好的多。因为一旦发现当天有不妥贴的举动而又无力回天时，会影响睡觉质量的。呵呵。</p><p>之所以要记录一下昨天，那是因为这周末的会议有东西交差了，而此金蛋是昨天下的，晚上。本以为这周会完成不了给A1板子加载Linux硬件模块及其驱动的任务，因为始终没有看到给A1上的Linux加载驱动的相关文档，只能是靠两个例子摸索了。再加之第一次开发驱动程序就是在专有设备上，没有经验，所以前两天的确有些抓狂（舶来词汇，还不知道如此用法妥否，呵呵）哦。</p><p>昨天实验室又进行了内部大搬家，因为屋子多了，老板自然要重新分配一下各组的实力范围，后端终于摆脱拥挤闷热的小屋，几个新生——有一个美女——则三天内第四次挪地方，填补了后端腾空的offic，模拟后端和RF组的人很多，则占据了那个七、八十平米的大房间。吃晚饭的时候我跟同屋的新生开玩笑说老板让他们也搬，结果吃完回来，他们果然在行动了！我一问才知道，他们听了我的话后居然去问老板了，老板很奇怪，不过他们搬家也是迟早的事情，所以就说：既然你们想今天搬那就搬吧。呵呵，他们走了，这里又恢复往日的宽敞和安静！借刀杀人哦。晚上果然效率高，得到了本周的金蛋！</p><p>21点半，找小强去跑步，十圈！半个多月没运动了，好爽，而且感觉体力特好，一点不喘，最后还是冲刺结束的。后面嘛，基本上就没什么新鲜的：回寝室、洗澡（水很小，要停水的样子，就先洗了——果然停了一个小时水）、看Mr. Smith、洗澡again（来水了！）、上床睡觉（两点，呵呵）。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					2349528@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-07-22  10:24</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[昨天是周末- -]]>
				</title>
				<link>http://sanecat.bokee.com/2307136.html</link>
				<description>
					<![CDATA[<p><p>昨天是2005年7月17日，凌晨1点半终于把做了一个月的翻译文稿发出去了——最后两周辛苦啊，几乎都是晚上2点以后才睡的。最后一周前三天翻译了我的最后一部分，大概十几页，剩下的时间就是在校验分给黄喆翻译的那50页。这家伙技术果然很烂，而且也不大认真，整个一漏洞百出。所以，下回再有此事，一定不叫他了，还是自己做为好。说实话，我还是对自己比较有信任的。</p><p><br />好歹弄完了，该出去活动一下了，散散心嘛。整整两个礼拜没有进行运动了。去找了张波，够远的，坐车到了人大又倒941。于是，开始了两个男人逛超市的壮举！我主要想看看有没有能看上眼的便宜点的体恤，不错，在沃尔玛发现一件蓝底上面有绿色装饰的一件，价格么，居然才20块钱哦！心动。大小正好贴身子——不知道会不会缩小，有些犹豫。最后离开了沃尔玛，没买。此行的结果是张波买了条内裤:(。因为没有达到目的，又去了美联美。还是没买到我喜欢的，还不如先前心仪的那件。离开，张波又买了一件衬衫:(。失败啊！不行，还是要买！终于，返沃运动开始了……</p><p><br />晚上七点，回到张波的住地，做好面条，听着音乐，看看终于买回的体恤加短裤——吃饭咯！！没想到我这么久没下厨，做的西红柿鸡蛋面还如此诱人！吃完，看碟，9点半，返校……</p><p><br />还好，运动了，买东西了，吃了。这个周末目的达到了:)。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					2307136@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-07-18  13:37</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[不知道说什么了，没新鲜事- -]]>
				</title>
				<link>http://sanecat.bokee.com/2154775.html</link>
				<description>
					<![CDATA[<p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 看看上次在这里写东西已经是半个多月前的日期了。反省这两周的功过得失，感觉还是有些乱——不知是忙才乱，还是因为乱而忙。和张伟一起调试Linux的移植、见鬼的tftp服务器总是不得要领的配置失败、看Linux Devices Driver（因为是英文版的，所以比较慢）、翻译东西、继续玩骑士与商人，还有就是打了几次篮球、和跑步。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从ALTERA下载的A1的文件系统还是不能裁剪得更小，我么具体亲自做，只是和张伟商量，他具体操作，所以也不知真正原因在哪里。不管怎样，现在可以在板子和PC之间快速传递东西了。虽然Linux上的tftp服务器曾经几次配置成功过，可现在却无论如何也无法再次工作。奇怪的问题，看来好要自己看看参数。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了不用重新启动电脑就用Linux，我终于安装了VMware，不过在XP下跑Fedora Core 3真的较慢。至于Linux Devices Driver 3rd Edition已经看完前三章了，还算比较仔细。下面我会专注在把A1的I2S驱动完成，这样就可以试验语音了。如果成功，会是件值得喝酒庆贺的事。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 翻译了三分之一多了，已经把前面翻译的部分发回去审验。不知道结果如何。现在的内容是蓝牙，专业术语太多，真是不易！那些怎么看都明白的英文要成为汉字，果然不太容易。不过，好歹知道些新东西，多少和嵌入式有些渊源。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 实验室终于把这一层计算机系同样是嵌入式，不过是软件的一帮人挤到三楼了。这两天老板和主任比较关注于新房间的使用问题。呵呵。周六开会倒是有点笑料，老板和主任用了大概十来分钟的时间讲了厕所卫生的问题——最终结论是，如果厕所再有味道，我们会被安排轮流扫厕所！呵呵。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					2154775@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-07-3  20:40</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[上周无事，这周忙- -]]>
				</title>
				<link>http://sanecat.bokee.com/1913385.html</link>
				<description>
					<![CDATA[<p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这段日子比较平静，波澜不惊；除了北京的天气多变无常外，老板的脸色还比较稳定——这可以作为喜讯了！从官方角度看我虽然离开了mp3组，不过那里的工作我还是一直参与的，毕竟以前的工作是我最了解的。通过反复测试和debug,终于放出一个声道的声音了——这是13天发生的事情。欣慰的是我写的控制模块没任何问题，否则进度不会那么理想。不过为什么没有另一个声道？百思不得其解也。板子？没问题。解码？以前就是用的这个不会出错……就是找不到原因。上周六开会老板的意思是弄两个Golden reference，一个替代我们自己做的TSC2300测试版，一个可以用来替代A1，产生PCM音频信号，这样就可以定位错误源。不过，这样测也是个比较浩大的任务，听起来容易做起来也许也很难。替代自己板子的东西他们决定从T1买TSC2301的开发板，大概人民币1000多元。另一个referenc自然就得拆一个mp3来做了。购买开发板的事情正在申请中，找毛病的工作还在进行。我已经不参与测试了，只是顾问一下而已。苑乔同学没事儿就拿个探针在板子上杵着，因为似乎所有的不确定就是那块自己做的板子了。奇迹总有发生的一天，据说是苑乔不小心把I2SIN和I2SOUT短路了，突然间双声道响起！！高兴过后检查原因，是把TSC2300的IN、OUT理解错了，OUT才应该是PCM音频输入信号线，把两根线在FPGA里互换一下双声道就对了。原来被假象蒙蔽了许久，被非技术问题耽误了这般长时间！看来做个真东东要注意的真的不少哦！上周六开会，终于在“大峡谷”播放孙燕姿的“the moment”了。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LinuxVoIP这边，上周我们几乎没任何进度，杂事太多，又要做linux的作业。呵呵，大家似乎都被见鬼的统计考试弄得没了计划。昨晚，我操作，老宋、老高、张伟四人兴奋异常——原因不详，可能是因为下大雨，加上定了快速出demo的计划，开始在arm-linux下编译libosip和libeXosip。能很顺利的在交叉编译环境中顺利通过是大家期望去不敢奢望的。毕竟设么错误都可能遇到——H323就没编译过去，而且错误不详。四个人叽叽喳喳，这两个东西居然编译过去了。看来人多、眼多、脑袋多就是高效呵。今天该编译linsip了，天气不错，希望可以过去。下一步就算编写linxu上的I2S、SPI和Codec驱动，这样我们的A1加mp3板做VoIP demo的计划就很快可以实现了。</p></p>]]>
				</description>
				<guid isPermaLink="false">
					1913385@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-06-14  09:44</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[[Linux命令] ld中文使用手册完全版(译)(摘)]]>
				</title>
				<link>http://sanecat.bokee.com/1777309.html</link>
				<description>
					<![CDATA[<p><div class="postcolor">摘自“中国龙” <a href="http://www.cnblogs.com/huqingyu/">http://www.cnblogs.com/huqingyu/</a></div><div class="postcolor"></div><div class="postcolor">使用ld <br />******** <br />本文档介绍GNU连接器ld的2.14版本. <br /><br />本文档在GNU自由文档许可证下发行.在&quot;GNU自由文档许可证&quot;一章中有关于本许可证的一份拷贝. <br /><br />概述 <br />******** <br /><br />'ld'把一定量的目标文件跟档案文件连接起来,并重定位它们的数据,连接符号引用.一般,在编译一个程序 <br />时,最后一步就是运行'ld'. <br /><br />'ld'能接受连接命令语言文件,这是一种用AT&amp;T的连接编辑命令语言的超集写成的文件,用来在连接的整个过程中提供显式的,全局的控制. <br /><br />本版本的'ld'使用通用BFD库来操作目标文件.这就允许'ld'读取,合并,写入目标文件时,可以使用各种不同 <br />的格式,比如,COFF或'a.out'. 不同的格式可以被连接到一起产生一个有效的目标文件. <br /><br />除了它的灵活性,GNU连接器比其它连接器更有用的地方在于它提供了诊断信息. 许多连接器在碰到一个错误的时候立即放弃执行;但'ld'却能够继续执行,以让你发现其他的错误(或者,在某些情况下,得到一个带有错误 <br />的输出文件) <br /><br />引用 <br />********** <br /><br />GNU连接器'ld'能够处理大量的不同情况,并且跟其他的连接器保持尽可能的兼容.这样,你就拥有更多的选择来控制它的行为. <br /><br />命令行选项 <br />==================== <br /><br />连接器提供大量的命令行选项,但是,在实际使用中,只有少数被经常使用.比如,'ld'的一个经常的使用场合是在 <br />一个标准的Unix系统上连接标准的Unix目标文件.在这样的一个系统上,连接文件'hello.o'如下: <br /><br />ld -o OUTPUT /lib/crt0.o hello.o -lc <br /><br />这告诉'ld'产生一个叫OUTPUT的文件,作为连接文件'/lib/crt0.o'和'hello.o'和库'libc.a'的结果.'libc.a' <br />来自标准的搜索路径.(参阅下文的关于'-l'选项的讨论). <br /><br />有些命令行选项可以在命令行的任何位置出现.但是,那些带有文件名的选项,比如'-l'或者'-T',会让文件在选项出现的位置上被读取. 对于非文件选项,以带不同的参数重复它,不会有进一步的效果,或者覆盖掉前面的相同项.那些多次出现时具有特殊含义的选项会在下文的描述中指出. <br /><br />无参数选项是那些被连接的目标文件和档案文件.它们可能紧随命令行选项,或在它们前面,或者跟它们夹杂在一起,但是一个目标文件参数是不会出现在一个选项跟它的参数之间的. <br /><br />通常,连接器至少引用一个目标文件,但是你可指定其它形式的二进制输入文件,这可以通过'-l','-R'或者脚本命令语言来实现.如果没有任何二进制文件被指定,连接器不会产生任何输出,并给出信息:&quot;缺少输入文件.&quot; <br /><br />如果连接器不能识别目标文件的格式,它会假设这些只是连接脚本.以这种方式指定的脚本增加了连接用的主连接脚本的内容(主连接脚本即缺省连接脚本或使用'-T'指定的脚本). 这个特性可以允许连接器连接一些文件,它们看上去既像目标文件,又像档案文件,但实际上只是定义了一些符号值,或者使用'INPUT'或'GROUP'来载入其它的目标文件.需要注意的是,用这种方式指定一个脚本只是增加了主连接脚本的内容;要完全替换掉主连接脚本,需要使用'-T'. <br /><br />对于名称是单个字符的选项,选项参数必须紧跟在选项字母后面,中间不留空,或者也可留有一个空格. <br /><br />对于名称是多个字符的选项,选项前可以有一个或两个破折号;比如,'-trace-symbol'和`--trace-symbol'是等价的. 注意,对于这条规则有一个例外.那些以小写字母'o'开头的多字符选项前面只能是两个破折号,这是为了避免跟选项'-o'混淆. 比如'-omagic'把输出文件的名字定为'magic',而'--omagic'在输出文件中设置NMAGIC标志. <br /><br />多字符选项的参数必须跟选项名间以一个等于号分开,或者以一个空格分开.比如:`--trace-symbol foo'和`--trace-symbol=foo'是等价的. 多字符选项的名字唯一缩写符也是可以被接受的. <br /><br />注意,如果连接器通过被编译器驱动来间接引用(比如gcc), 那所有的连接器命令行选项前必须加上前缀'-Wl'(或者能被特定编译器驱动接受的其他前缀),就像下面这样: <br /><br />gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup <br /><br />这很重要,因为否则的话,编译器驱动程序会默认丢掉这些连接选项,产生一个错误的连接. <br /><br />下面是关于被GNU连接器接受的常用命令行开关的一个列表: <br /><br />`-aKEYWORD' <br />这个选项在HP/UX兼容系统上被支持. 参数KEYWORD必须是下面字符串中的一个:`archive', <br />`shared', or `default'. `-aarchive'在功能上跟`-Bstatic'相同,而另外两个关键字功能上跟 <br />`-Bdynamic'相同. 这个选项可被多次使用. <br /><br />`-AARCHITECTURE' <br />`--architecture=ARCHITECTURE' <br />在最近发行版本的'ld'中,这个选项只在Intel 960系列架构上有用. 在那种'ld'配置中,参数 <br />ARCHITECTURE确定960系列的某一特定架构,启用某些安全措施,并修改档案库的搜索路径. <br /><br />将来的'ld'发行版可能为其它架构系列支持相似的功能. <br /><br />`-b INPUT-formAT' <br />`--format=INPUT-formAT' <br />'ld'可以被配置为支持多于一种的目标文件.如果你的'ld'以这种方式被配置,你可以使用'-b'选 <br />项为输入目标文件指定二进制格式. 就算'ld'被配置为支持可选目标格式,你不必经常指定这一项, <br />因为'ld'被配置为在每一台机子上把最常用的格式作为默认输入格式. INPUT-formAT是一个字符串, <br /><br />你可能在连接一个不常用的二进制格式文件时需要这个参数.你也可使用'-b'来显式切换格式(在连接 <br />不同格式的目标文件时),方法是在每一组特定格式的目标前使用'-b INPUT-formAT'. <br /><br />缺省的格式是从环境变量'GNUTARGET'中得到的.你也可以从一个脚本中定义输入格式,使用的命令是 <br />'TARGET'. <br /><br />`-c MRI-COMMANDFILE' <br />`--mri-script=MRI-COMMANDFILE' <br />为了跟MRI生产的连接器兼容,'ld'接受另一种用受限命令语言写成的脚本文件,通过选项'-c'引入MRI <br />脚本文件;使用'-T'选项是运行用普通'ld'脚本语言写的连接脚本.如果MRI-CMDFILE不存在,'ld'在'-L' <br />指定的目录中寻找. <br /><br />`-d' <br />`-dc' <br />`-dp' <br />这三个选项是等价的; 多字符形式是为了跟其他连接器兼容才被支持的.它们给普通符号分配空间,即 <br />使一个重定位输出文件已经被指定(通过'-r'). 脚本命令`FORCE_COMMON_ALLOCATION'具有同样的效果. <br /><br />`-e ENTRY' <br />`--entry=ENTRY' <br />使用符号ENTRY作为你的程序的开始执行点,而不是使用缺省的进入点.如果没有叫做ENTRY的符号,连接器会企图把ENTRY作为一个数字进行分析,并使用它作为入口地址(数字会被解释为10进制的;你可以使用前导的'0x'强制为16进制,或'0'作为8进制.) <br /><br />`-E' <br />`--export-dynamic' <br />当创建一个动态连接的可执行程序时, 把所有的符号加到动态符号表中.动态符号表是一个符号集,这 <br />些符号对于运行时的动态对象是可见的. <br /><br />如果你不使用这个选项,动态符号表中就会只含有那些连接进来的动态对象中用到的符号 <br /><br />如果你使用'dlopen'来载入动态对象,它需要引用程序中的符号,那你可能需要在连接程序时用到这个 <br />选项. <br /><br />你也可以使用版本脚本来控制哪些符号应当被加到动态符号表中. <br /><br />`-EB' <br />连接big-endian对象. 这会影响缺省输出格式. <br /><br />`-EL' <br />连接little-endian对象. 这会影响缺省输出格式. <br /><br />`-g' <br />忽略. 为了跟其它工具兼容而提供. <br /><br />`-i' <br />执行一个增量连接(跟'-r'等同) <br /><br />`-init NAME' <br />当创建一个ELF可执行文件或共享对象时,当可执行文件或共享对象被加载时,调用NAME, 这是通过把 <br />DT_INIT设置成函数的地址实现的. 缺省情况下,连接器使用'_init'作为调用的函数. <br /><br />`-lARCHIVE' <br />`--library=ARCHIVE' <br />增加一个档案文件ARCHIVE到连接的文件列表中.这个选项可以被多次使用. 'ld'会为每一个指定的 <br />ARCHIVE搜索它的路径列表,寻找`libARCHIVE.a' <br /><br />对于支持共享库的系统, 'ld'可能还会搜索扩展名不是'.a'库.特别的,在ELF和SunOS系统上,'ld'会 <br />在搜索带有'.a'扩展名的库前搜索带'.so'扩展名的库. <br /><br />`-M' <br />`--print-map' <br />打印一个连接位图到标准输出.一个连接位图提供的关于连接的信息有如下一些: <br /><br />* 目标文件和符号被映射到内存的哪些地方. <br /><br />* 普通符号如何被分配空间. <br /><br />* 所有被连接进来的档案文件,还有导致档案文件被包含进来的那个符号. <br /><br />`-n' <br />`--nmagic' <br />关闭所有节的页对齐,如果可能,把输出格式标识为'NMAGIC'. <br /><br />`-N' <br />`--omagic' <br />把text和data节设置为可读写.同时,取消数据节的页对齐,同时,取消对共享库的连接.如果输出格式支持Unix风格的magic number, 把输出标志为'OMAGIC'. <br /><br />`--no-omagic' <br />这个选项执行的操作大部分正好跟'-N'相反.它设置text节只读,强制data节页对齐. 但是,这个选项并不开启连接共享库的功能. 使用'-Bdynamic'开启这个功能. <br /><br />`-o OUTPUT' <br />`--output=OUTPUT' <br />使用OUTPUT作为'ld'产生的程序的名字;如果这个选项没有指定,缺省的输出文件名是'a.out'.脚本命令'OUTPUT'也可以被用来指定输出文件的文件名. <br /><br />`-O LEVEL' <br />如果LEVEL是一个比0大的数值, 'ld'优化输出.这可能会明显多占用时间,所以只有在生成最后的文件 <br />时使用. <br /><br />`-q' <br />`--emit-relocs' <br />把重定位节和内容留在完全连接后的可执行文件中. 连接分析和优化工具可能需要这些信息用来进行 <br />正确的修改与执行. 这在大的可执行文件中有用. <br /><br />这个选项目前只支持ELF平台. <br />`-r' <br />`--relocateable' <br />产生可重定位的输出, 比如,产生一个输出文件它可再次作为'ld'的输入.这经常被叫做&quot;部分连接&quot;. <br />作为一个副作用,在支持标准Unix魔数的环境中,这个选项会把输出文件的魔数设置为'OMAGIC'. 如果这个选项没有被指定,一个绝对文件就会被产生.当连接C++程序时,这个选项就不会解析构造函数的 <br />引用;要解析,必须使用'-Ur' <br /><br />如果输入文件跟输出文件的格式不同,只有在输入文件不含有重定位信息的时候部分连接才被支持.输出格式不同的时候会有更多的限制.比如,有些'a.out'的格式在输入文件是其他格式的时候完全不支持部分连接. <br /><br />这个选项跟'-i'等效. <br /><br />`-R FILENAME' <br />`--just-symbols=FILENAME' <br />从FILENAME中读取符号名跟它们的值,但不重位这个文件,或者根本不把它包含在输出文件中.这就允 <br />许你的输出文件引用其它程序中定义的绝对内存地址.你可以多次使用这个选项. <br /><br />为了跟其他ELF连接器兼容,如果'-R'选项后面跟有一个目录名,而不是一个文件名,它会被处理成</div><div class="postcolor">'-rpath'选项. <br /><br />`-s' <br />`--strip-all' <br />忽略输出文件中所有的符号信息. <br /><br />`-S' <br />`--strip-debug' <br />忽略输出文件中所有的调试符号信息(但不是所有符号). <br /><br />`-t' <br />`--trace' <br />打印'ld'处理的所有输入文件的名字. <br /><br />`-T SCRIPTFILE' <br />`--script=SCRIPTFILE' <br />把SCRIPTFILE作为连接脚本使用. 这个脚本会替代'ld'的缺省连接脚本(而不是增加它的内容),所以 <br />命令文件必须指定所有需要的东西以精确描述输出文件. 如果SCRIPTFILE在当前目录下不存在,'ld' <br />会在'-L'选项指定的所有目录下去寻找.多个'-T'选项会使内容累积. <br /><br />`-u SYMBOL' <br />`--undefined=SYMBOL' <br />强制SYMBOL在输出文件中作为一个无定义的符号被输入.这样做会有一些效果,比如,会引发从标准库 <br />中连接更多的模块. '-u'可以以不同的参数反复使用,以输入多个无定义的符号.这个选项跟连接脚本命令中的'EXTERN'是等效的. <br /><br />`-Ur' <br />对于不是C++的程序,这个选项跟'-r'是等效的: 它产生可重定位的输出,比如,一个输出文件它可以再 <br />次作为'ld'的输入. 当连接C++程序时,'-Ur'解析构造函数的引用,跟'-r'不同. 但如果在一些用'-Ur' <br />连接过的文件上再次使用'-Ur',它不会工作,因为一旦构造函数表被建立,它不能被添加内容.请只在 <br />最后一遍连接的时候使用'-Ur', 对其它的,只使用'-r'. <br /><br />`--unique[=SECTION]' <br />对于所有匹配SECTION的输入节,在输出文件中都各自创建单独的节,或者,如果可选的通配符SECTION <br />参数丢失了,为每一个孤儿输入节创建一个输出节. 一个孤儿节是一个连接脚本中没有指定的节.你 <br />可以在命令行上多次使用这个选项; 它阻止对同名输入节的合并,在连接脚本中重载输出节分配. <br /><br />`-v' <br />`--version' <br />`-V' <br />显示'ld'的版本. '-V'选项同时会列出支持的模拟器. <br /><br />`-x' <br />`--discard-all' <br />删除所有的本地符号. <br /><br />`-X' <br />`--discard-locals' <br />删除所有的临时本地符号.对于大多数目标平台,就是所有的名字以'L'开头的本地符号. <br /><br />`-y SYMBOL' <br />`--trace-symbol=SYMBOL' <br />打印出所有SYMBOL出现的被连接文件的名字. 这个选项可以被多次使用. 在很多系统中,这在预先确定底线时很有必要. <br /><br />当你拥有一个未定义的符号,但不知道这个引用出自哪里的时候,这个选项很有用. <br /><br />`-Y PATH' <br />为缺省的库搜索路径增加一条路径.这个选项是为了跟Solaris兼容. <br /><br />`-z KEYWORD' <br />能被识别的关键字包括'initfirst', 'interpose', 'loadfltr',`nodefaultlib', `nodelete', <br />`nodlopen', `nodump', `now', `origin',`combreloc', `nocombreloc' and `nocopyreloc'. 为了跟Solaris兼容,所有其它的关键字都被忽略. 'initfirst'标志一个对象,使它在运行时,在所有其他对象之前被初始化. 'interpose'标志一个对象,使它的符号表放在所有其他符号之前,作为主要的执行者. <br />'loadfltr'标志一个对象, 使它的过滤器在运行时立即被处理.'nodefaultlib'标志一个对象,使在搜索 <br />本对象所依赖的库时,忽略所有缺省库搜索路径. 'nodelete'标志一个对象,使它在运行时不会被从内存 <br />中删除.'nodlopen'标志一个对象,使这个对象不可以通过'dlopen'载入.'nodump'标志一个对象,使它不能被'dldump'转储. 'now'标志一个对象,使它成为非懒惰运行时绑定对象. 'origin'标志一些可能含有 $ORIGIN的对象,'defs'不允许无定义符号. 'muldefs'允许重定义. 'comberloc'组合多个重定位节,重新排布它们,让动态符号可见. 'nocomberloc'使多个重定位节组合无效. 'nocopyreloc'使重定位拷贝后的结果无效. <br /><br />`-( ARCHIVES -)' <br />`--start-group ARCHIVES --end-group' <br />ARCHIVES应当是一个关于档案文件的列表. 它们可以是显式的文件名,或者'-l'选项. <br /><br />这些指定的档案文件会被多遍搜索,直到没有新的无定义引用被创建. 通常,一个档案文件只会被搜索一 <br />次. 但如果这个档案文件中的一个符号需要被用来解析一个档案中的目标引用到的无定义的符号,而这个 <br />符号在命令行上的后面某个档案文件中出现, 连接器不能解析这个引用. 把这些档案文件分组后,它们都 <br />可被反复搜索直到所有可能的引用都被解析了为止. <br /><br />使用这个选项有一个很大的运行开销. 只有在无法避免在多个档案文件中使用循环引用时才用它. <br /><br />`--accept-unknown-input-arch' <br />`--no-accept-unknown-input-arch' <br />告诉连接器接受那些架构不能被识别的输入文件. 但前提假设是用户知道他们在做什么,并且是故意要连 接这些未知的输入文件. 在版本2.14之前,这个是连接器的缺省行为. 从版本2.14以后的,缺省行为是拒 <br />绝这类输入文件, 所以`--accept-unknown-input-arch'选项被用来恢复旧的行为. <br /><br />`-assert KEYWORD' <br />这个选项被忽略,只是用来跟SunOS保持兼容. <br /><br />`-Bdynamic' <br />`-dy' <br />`-call_shared' <br />连接动态链接库. 这个仅仅在支持共享库的平台上有用.在这些平台上,这个选项通常是默认行为. 这个选 <br />项的不同形式是为了跟不同的系统保持兼容. 你可以在命令行上多次使用这个选项:它影响紧随其后的'-l'选项的库搜索. <br /><br />`-Bgroup' <br />在动态节的'DT_FLAGS_1'入口上设置'DF_1_GROUP'标志.这会让运行时连接器在处理在这个对象和它的相关部分搜索时只在组中. '--no-undefined'是隐式的. 这个选项只在支持共享库的ELF平台上有用. <br /><br />`-Bstatic' <br />`-dn' <br />`-non_shared' <br />`-static' <br />不连接共享库. 这个仅仅在支持共享库的平台上有用. 这个选项的不同形式是为了跟不同的系统保持兼 <br />容. 你可以在命令行上多次使用这个选项:它影响紧随其后的'-l'选项的库搜索. <br /><br />`-Bsymbolic' <br />当创建一个共享库时, 把对全局符号的引用绑定到共享库中的定义(如果有), 通常, 一个连接共享库的程 序重载共享库中的定义是可能的. 这个选项只在支持共享库的ELF平台上有用. <br /><br />`--check-sections' <br />`--no-check-sections' <br />让连接器在节地址被分配后不要去检查节地址是否重叠.通常,连接器会执行这种检查,如果它发现了任何 重叠,它会产生相应的错误信息. 连接器知道也允许节的重叠. 缺省的行为可以使用命令行开关 <br />`--check-sections'来恢复. <br /><br />`--cref' <br />输出一个交叉引用表. 如果一个连接器位图文件被产生, 交叉引用表被打印到位图文件. 否则, 它被打印 <br />到标准输出. <br /><br />表的格式相当的简单, 所以,如果需要,可以通过一个脚本很轻易地处理它. 符号是以名字被打印输出,存 <br />储. 对于每一个符号,给出一个文件名列表. 如果符号被定义了, 列出的第一个文件是符号定义的所在. <br />接下来的文件包含符号的引用. <br /><br />`--no-define-common' <br />这个选项限制对普通符号的地址分配. 脚本命令`INHIBIT_COMMON_ALLOCATION'具有同等的效果. <br /><br />`--no-define-common'选项允许从输出文件的类型选择中确定对普通符号的地址分配; 否则, 一个非重定 <br />位输出类型强制为普通符号分配地址. 使用'--no-define-common'允许那些从共享库中引用的普通符号只 <br />在主程序中被分配地址. 这会消除在共享库中的无用的副本的空间, 同时,也防止了在有多个指定了搜索 <br />路径的动态模块在进行运行时符号解析时引起的混乱. <br /><br />`--defsym SYMBOL=EXPRESSION' <br />在输出文件中建立一个全局符号,这个符号拥有一个EXPRESSION指定的绝对地址. 你可以多次使用这个选 <br />项定义多个符号. EXPRESSION支持一个受限形式的算术运算:你可以给出一个十六进制常数或者一个已存 <br />在符号的名字,或者使用'+'和'-'来加或减十六进制常数或符号. 如果你需要更多的表达式,可以考虑在脚 <br />本中使用连接器命令语言, 注意在SYMBOL,=和EXPRESSION之间不允许有空格. <br /><br />`--demangle[=style]' <br />`--no-demangle' <br />这些选项控制是否在错误信息和其它的输出中重组符号名. 当连接器被告知要重组, 它会试图把符号名以一种可读的形式的展现: 如果符号被以目标文件格式使用,它剥去前导的下划线,并且把C++形式的符号名转换成用户可读的名字. 不同的编译器有不同的重组形式. 可选的重组形式参数可以被用来为你的编译器选择一个相应的重组形式. 连接器会以缺省形式重组直至环境变量`COLLECT_NO_DEMANGLE'被设置. 这些 <br />选项可以被用来重载缺省的设置. <br /><br />`--dynamic-linker FILE' <br />设置动态连接器的名字. 这个只在产生动态连接的ELF可执行文件时有效. 缺省的动态连接器通常是正确 的; 除非你知道你在干什么,不要使用这个选项. <br /><br />`--embedded-relocs' <br />这个选项只在连接MIPS嵌入式PIC代码时有效, 这些代码必须是由GNU的编译器跟汇编器通过-membedded-pic <br />选项生成的. 它导致连接器产生一个表,这个表被用来在运行时重定位所有的被静态初始化为指针值的数 据. <br /><br />`--fatal-warnings' <br />把所有的警告视为错误. <br /><br />`--force-exe-suffix' <br />确保输出文件有一个.exe后缀. <br /><br />如果一个被成功完整连接的输出文件不带有一个'.exe'或'.dll'后缀, 这个选项确保连接器把输出文件 <br />拷贝成带有'.exe'后缀的同名文件. 这个选项在使用微软系统来编译未经修改的Unix的makefile时很有 用, 因为有些版本的windows不会运行一个不带有'.exe'后缀的映像. <br /><br />`--no-gc-sections' <br />`--gc-sections' <br />允许对未使用的输入节的碎片收集. 在不支持这个选项的平台上,被忽略. 这个选项不能跟 '-r'选项共存 <br />也不能被用来进行动态连接. 缺省行为可以用`--no-gc-sections'进行恢复. <br /><br />`--help' <br />在标准输出上打印一个命令行选项概要,然后退出. <br /><br />`--target-help' <br />打印一个所有目标平台相关的选项的概要,然后退出. <br /><br />`-Map MAPFILE' <br />打印一个连接位图到文件MAPFILE中. 参阅上面关于'-M'选项的描述. <br /><br />`--no-keep-memory' <br />'ld'通常会以速度优先于内存使用的方式优化程序,这是通过把输入文件的符号表放在内存缓冲中实现的, <br />这个选项告诉'ld'以内存使用优先来优化, 尽可能的减小符号表的重读. 这在'ld'在连接一个大文件时 <br />超出内存限制时有用. <br /><br />`--no-undefined' <br />`-z defs' <br />通常,当创建一个非符号共享库时, 无定义的符号允许出现,并留待运行时连接器去解决. 这个选项关闭这 <br />样的无定义符号的使用. 开关`--no-allow-shlib-undefined'控制共享对象被连接进共享库时的行为. <br /><br />`--allow-multiple-definition' <br />`-z muldefs' <br />通常,当一个符号被定义多次时, 连接器会报告一个致命错误. 这些选项允许重定义并且第一个定义被使 <br />用 <br /><br /><br />`--allow-shlib-undefined' <br />`--no-allow-shlib-undefined' <br />允许(缺省)或不允许无定义符号存在于共享对象中. 这个开关的设置会重载'--no-undefined',这里只关 <br />注共享对象. 这样,如果'--no-undefined'被设置,但'--no-allow-shlib-undefined'未被设置, 连锁反应 <br />是存在于规则对象文件中的无定义的符号会引起一个错误,但是在共享对象中的未定义的符号会被忽略. <br /><br />把`--allow-shlib-undefined'设置为缺省的原因是在连接时指定的共享对象并不一定是载入时可载入的 <br />那个,所以,符号可能要到载入时间才被解析. <br /><br />`--no-undefined-version' <br />通常当一个符号有一个未定义的版本时,连接器会忽略它. 这个选项不允许符号有未定义的版本,并且碰 <br />到这种情况,会报告一个严重错误. <br /><br />`--no-warn-mismatch' <br />通常, 如果你因为一些原因,企图把一些不匹配的输入文件连接起来的时候,'ld'会给出一个错误,可能这 <br />些文件是因为由不同的处理器编译. 这个选项告诉'ld'应当对这样的错误默认允许. 这个选项必须小心 <br />使用. <br /><br />`--no-whole-archive' <br />为后面的档案文件关闭'--whole-archive'选项的影响. <br /><br />`--noinhibit-exec' <br />当一个可执行文件还可以使用时,就保留它. 通常,连接器如果在连接过程中遇到了错误,就不会产生输出 <br />文件;当它遇上错误时,它会退出而不写输出文件. <br /><br />`-nostdlib' <br />仅搜索那些在命令行上显式指定的库路径. 在连接脚本中(包含在命令行上指定的连接脚本)指定的库路 <br />径都被忽略. <br /><br />`--oformat OUTPUT-formAT' <br />'ld'可以被配置为支持多于一种的目标文件. 如果你的'ld'以这种方式被配置,你可以使用'--oformat' <br />选项来指定输出目标文件的二进制格式.就算'ld'被配置为支持多种目标格式,你也不必指定这个项,因 <br />为'ld'应当被配置为把最常用的输出格式作为默认格式. OUTPUT-formAT是一个文本串,是被BFD库支持的一个特定格式的名字.脚本命令'OUTPUT_formAT'也可以指定输出格式,但这个选项可以覆盖它. <br /><br />`-qmagic' <br />这个选项被忽略,只是为了跟Linux保持兼容. <br /><br />`-Qy' <br />这个选项被忽略,只是为了跟SVR4保持兼容. <br /><br />`--relax' <br />一个机器相关的选项. 只有在少数平台上,这个选项被支持. <br /><br />在某些平台上,'--relax'选项在连接器解析程序中的地址时执行可能的全局优化, 比如松散地址模式和在输出文件中合成新的指令. <br /><br />在某些平台上,连接时全局优化会进行符号调试导致程序不能运行. <br /><br />在不支持这个选项的平台上,'--relax'被接受,但被忽略. <br /><br />`--retain-symbols-file FILENAME' <br />只保留在FILENAME中列出的那些符号,丢弃所有其他的. FILENAME是一个简单地平坦模式文件, 一个符号占一行. 这个选项在那些会逐步积累起一个大的全局符号表的系统中(比如 VxWorks)会很有用,它能有效地节约内存空间. <br /><br />'--retain-symbols-file'不丢弃未定义的符号,和需要重定位的符号. <br /><br />你可能在命令行上只指定'--retain-symbol-file'一次, 它覆盖'-s'和'-S'的功能. <br /><br />`-rpath DIR' <br />为运行时库的搜索路径增加一个目录. 这个在连接带有共享库的ELF可执行文件时有用. '-rpath'的所有参数会被 <br />连接起来传递给运行时连接器, 运行时连接器在运行时用它们定位共享对象. '-rpath'选项在定位那些在连接参数 <br />指定的共享对象需要的共享对象时也很有用; 参阅关于'-rpath-link'选项的描述, 如果在连接一个ELF可执行文件 <br />时不使用'-rpath'选项,那些环境变量'LD_RUN_PATH'选项就会被使用. <br /><br />'-rptah'选项也可以使用在SunOS上. 缺省地,在SunOS上,连接器会从所有的'-L'选项中形成一个运行时搜索路径. <br />如果使用了'-rpath'选项, 那运行时搜索路径就只从'-rpath'选项中得到, 忽略'-L'选项. 这在使用GCC时非常有用, 它会用上很多的'-L'选项,而这些路径很可能就是NFS挂上去的文件系统中. <br /><br />为了同ELF的连接器兼容, 如果'-R'选面后面跟有一个目录名, 而不是一个文件名,那它也会被处理成'-rpath'选项. <br /><br />`-rpath-link DIR' <br />当在SunOS上使用ELF时,一个共享库可能会用到另一个共享库. 当'ld -share'把一个共享库作为一个输入文件连接时就有可能发生这种情况. <br /><br />当一个连接器在作非共享,不可重定位连接时,如果遇上这种依赖情况,它会自动定位需要的共享库,然后把它包含在 <br />连接中, 如果在这种情况中,它没有被显式包含, 那'-rpath-link'选项指定优先搜索的一组路径名. <br /><br />这个选项必须小心使用,因为它会覆盖那些可能已经被编译进共享库中的搜索路径. 在这种情况下,它就有可能使用一个非内部的不同的搜索路径. <br /><br />连接器使用下面的搜索路径来定位需要的共享库: <br /><br />1. 所有由'-rpath-link'选项指定的搜索路径. <br /><br />2. 所有由'-rpath'指定的搜索路径. '-rpath'跟'-rpath_link'的不同之处在于,由'-rpath'指定的路径被包含在可执行文件中,并在运行时使用, 而'-rpath-link'选项仅仅在连接时起作用. 它只用于本地连接器. <br /><br />3. 在一个ELF系统中, 如果'-rpath'和'rpath-link'选项没有被使用, 会搜索环境变量'LD_RUN_PATH'的内容.它也只对本地连接器起作用. <br /><br />4. 在SunOS上, '-rpath'选项不使用, 只搜索所有由'-L'指定的目录. <br /><br />5. 对于一个本地连接器,环境变量'LD_LIBRARY_PATH'的内容被搜索. <br /><br />6. 对于一个本地ELF连接器,共享库中的`DT_RUNPATH'和`DT_RPATH'操作符会被需要它的共享库搜索. 如果'DT_RUNPATH'存在了, 那'DT_RPATH'就会被忽略. <br /><br />7. 缺省目录, 常规的,如'/lib'和'/usr/lib'. <br /><br />8. 对于ELF系统上的本地连接器, 如果文件'/etc/ld.so.conf'存在, 这个文件中有的目录会被搜索. <br />如果需要的共享库没有被找到, 那连接器会发出一条警告信息,并继续执行连接. <br /><br />`-shared' <br />`-Bshareable' <br />创建一个共享库. 这个选项只在ELF, XCOFF和SunOS平台上有用。 在SunOS上，如果'-e'选项没有被使用，并在连接中有未定义的符号，连接器会自动创建一个共享库， <br /><br />`--sort-common' <br />这个选项告诉'ld'当它把普通符号放到相应的输出节中时按大小进行排序。排在最前面的是所有的一字节符号，然后是所有的二字节，然后是所有的四字节， 然后是其它的。 这是为了避免因为对齐约束而在符号间产生的断裂<br />`--split-by-file [SIZE]' <br />跟'--split-by-reloc'相似，但在SIZE达到时，为每一个输入文件创建一个新的输出节。如果没有给出，SIZE缺省地设置为1 <br /><br />`--split-by-reloc [COUNT]' <br />试图在输出文件中创建节外的节，这样就没有单个的输出节含有多于COUNT个重定位符。这在产生巨大的用于COFF格 <br />式的实时内核的可重定位文件时非常有用；因为COFF不能在一个节中表示多于65535个重定位。 注意，这在不支持专有节的目标文件格式中会失败，连接器不会把单个输入节分割进行重分配， 所以，如果单个输入节含有多于COUNT个重定位符， 那一个输出节会含有同样多的可重定位符。COUNT缺省被设为32768. <br /><br />`--stats' <br />计算并显示关于连接器操作的统计信息, 比如执行时间,内存占用等. <br /><br />`--traditional-format' <br />对于某些目标平台, 'ld'的输出会跟某些面有的连接器的输出有所不同. 这个开关要求'ld'使用传 <br />统的格式. <br /><br />比如, 在SunOS上, 'ld'会把符号串表中的两上完全相同的入口合并起来. 这可以把一个带有调试信息 <br />的输出文件的大小减小百发之三十. 不幸地是, SunOS的'dbx'程序不能读取这个输出的程序(gdb就没 <br />有问题).'--trafitinal-format'开关告诉'ld'不要把相同的入口合并起来. <br /><br />`--section-start SECTIONNAME=ORG' <br />通过指定ORG, 指定节在输出文件中的绝对地址. 你可以多次使用这个选项来定位多个节. ORG必须是 <br />一个十六进制整数; 为了跟基他的连接器兼容,你可以忽略前导'0x'. 注意,在SECTIONNAME,等号,ORG之间不允许有空格出现. <br /><br />`-Tbss ORG' <br />`-Tdata ORG' <br />`-Ttext ORG' <br />跟-section-start同义, 不过把SECTIONNAME替换为'.bss', '.data'或'.text'. <br /><br />`--dll-verbose' <br />`--verbose' <br />显示'ld'的版本号,并列出支持的连接器模拟. 显示哪些输入文件能被打开,而哪些不能. 显示连接器 <br />使用的连接脚本. <br /><br />`--version-script=VERSION-SCRIPTFILE' <br />指定连接器的脚本的版本名. 这个常在创建一个需要指定附加的关于版本层次的信息的共享库时使用, <br />这个选项只有支持共享库的ELF平台上有效. <br /><br />`--warn-common' <br />当一个普通符号跟另一个普通符号或会号定义合并起来时,警告. 类Unix连接器允许这个选项,有时比 <br />较实用, 但是在其他的操作系统上的连接器不允许这个. 这个选项可以让你在合并全局符号时发现某 <br />些潜在的问题. 不幸的是,有些C库使用这项特性,所以你可能会像在你的程序中一样,在库中得到一些 <br />警告信息. <br /><br />这里给出三种类型的全局符号的解释(用C语言): <br /><br />`int i = 1;' <br />一个定义, 它会存在于输出文件中的已初始化数据节. <br /><br />`extern int i;' <br />一个未定义符号,它不占用空间. 必须在另外某一处对它有一个定义,或一个普通符号 <br /><br />`int i;' <br />一个普通符号.如果对于一个变量只有(一个或多个)普通符号, 它进入输出文件的未初始化数据域. 连 <br />接器会把同一变量的多个普通符号合并成一个单一的符号. 如果他们有不同的大小, 它采用最大的一 <br />个. 如果是对同一变量的定义,连接器把一个普通符号转化为一个声明. <br /><br />'--warn-common'选项可以产生五种类型的警告. 每种警告由两行组成: 第一行描述遇到的符号, 第二 <br />行描述遇到的前一个具有相同名字的符号. 一个或两个都可能成为普通符号. <br /><br />1. 把一个普通符号转化为一个引用, 因为这个符号已经有一个定义了. <br />FILE(SECTION): warning: common of `SYMBOL' <br />overridden by definition <br />FILE(SECTION): warning: defined here <br /><br />2. 把一个普通符号转化为一个引用,因为遇到了第二个关于符号的定义. 这跟前一种情况相同,除了符 <br />号遇到的顺序相反. <br />FILE(SECTION): warning: definition of `SYMBOL' <br />overriding common <br />FILE(SECTION): warning: common is here <br /><br />3. 把一个普通符号跟前一个相同大小的普通符号合并. <br />FILE(SECTION): warning: multiple common <br />of `SYMBOL' <br />FILE(SECTION): warning: previous common is here <br /><br />4. 把一个普通符号跟前一个更大的普通符号合并. <br />FILE(SECTION): warning: common of `SYMBOL' <br />overridden by larger common <br />FILE(SECTION): warning: larger common is here <br /><br />5. 把一个普通符号跟前一个更小的普通符号合并. 这跟前一种情况相同, 除了遇到的符号的顺序不同. <br />FILE(SECTION): warning: common of `SYMBOL' <br />overriding smaller common <br />FILE(SECTION): warning: smaller common is here <br /><br />`--warn-constructors' <br />如果有全局结构体被使用到了,警告. 这只对很少的一些目标文件格式有用. 对于COFF或ELF格式, 连 <br />接器不同探测到全局结构体的使用. <br /><br />`--warn-multiple-gp' <br />如果在输出文件中,需要多个全局指针值,警告. 这只对特定的处理器有意义, 比如Alpha. 特别的,有 <br />些处理器在特定的节中放入很大的常数值. 一个特殊的寄存器(全局指针)指向这个节的中间部分, 所 <br />以通过一个基地址寄存器相关的地址模式,这个常数可以很容易地被载入. 因为这个基寄存器相关模式 <br />的偏移值是固定的而且很小(比如,16位), 这会限制常量池的最大尺寸. 所以,一个很大的问题是,为了 <br />能够定位所有可能的常数,经常需要使用多个全局指针值. 这个选项在这种情况发生时产生一条警告. <br /><br />`--warn-once' <br />对于每一个未定义符号只警告一次, 而不是在每一个用到它的模块中警告一次. <br /><br />`--warn-section-align' <br />如果输出节的地址因为对齐被改变了,警告. 通常, 对齐会被输入节设置. 如果'SECTION'命令没有指 <br />定节的起始地址, 地址就会被隐式改变. <br /><br />`--whole-archive' <br />对于每一个在命令行中'--whole-archive'选项后面出现的档案文件, 在连接中包含档案文件中的所有 <br />目标文件, 而不是为需要的目标文件搜索档案文件. 这在把一个档案文件转化为一个共享库时使用, 把 <br />所有的目标放到最终的共享库中. 这个选项可以被多次使用. <br /><br />在GCC中使用这个选项需要注意两点: 首先,GCC不知道这个选项, 所以,你必须使用'-Wl, -whole-archive'. <br />第二, 不要忘了在你的档案文件列表的后面使用'-Wl, -no-whole-archive',因为GCC会把它自己的档 <br />案列表加到你的连接后面, 而这可能并不是你所预期的. <br /><br />`--wrap SYMBOL' <br />对SYMBOL符号使用包装函数. 任何未定义的对SYMBOL符号的引用会被解析成'_wrap_SYMBOL'. 而任何未定义的对'_real_SYMBOL'的引用会被解析成SYMBOL. <br /><br />这可以用来为系统函灵敏提供一个包装. 包装函灵敏应当被叫做'__wrap_SYMBOL'. 如果需要调用这个函数, 那就应该调用'__real_SYMBOL' <br /><br />这里是一个没什么实用价值的例子: <br /><br />void * <br />__wrap_malloc (int c) <br />{ <br />printf (&quot;malloc called with %ld\n&quot;, c); <br />return __real_malloc &copy;; <br />} <br /><br />如果你使用'--wrap malloc'把这节代码跟其他的代码连接, 那所有的对'malloc'的调用都会调用 <br />'__wrap_malloc'函数. 而在'__wrap_malloc'中的'__real_malloc'会调用真正的'malloc'函数. <br /><br />你有可能也希望提供一个'__real_malloc'函数, 这样,不带有'--wrap'的连接器也会成功连接.如果 <br />你这样做了, 你不能把'__real_malloc'的定义跟'__wrap_malloc'放到同一个文件中;如果放在一起 <br />汇编器会在连接器之前把调用解析成真正的'malloc'. <br /><br />`--enable-new-dtags' <br />`--disable-new-dtags' <br />连接器可以在ELF中创建一个新的动态标签. 但是旧的ELF系统可能不理解这个. 如果你指定了 <br />'--enable-new-dtags',动态标签会按需要被创建. 如果你指定了'--disable-new-dtags',那不会有 <br />新的动态标签被创建. 缺省地,新的动态标签不会被创建. 注意这些选项只在ELF系统中有效. <br /><br />i386 PE平台的特定选项. <br />----------------------------------- <br /><br />i386 PE连接器支持'-shared'选项, 它使输出文件为一个动态链接库(DLL),而不是一个普通的可执行文件. 在使用这个选项的时候,你应当为输出文件取名'*.dll',另外, 连接器完全支持标准的'*.def'文件, 这类文件可以在连接器命令行上象一个目标文件一样被指定(实际上, 它应当被放在它从中导出符号的那个档案文件前面,以保证它们象一个普通的目标文件一样被连接进去.) <br /><br />除了对所有平台通用的那些选项外,i386 PE连接器支持一些只对i386平台专有的命令行选面. 带有值的选项应当用空格或等号把它跟值分隔开. <br /><br />`--add-stdcall-alias' <br />如果给出这个选项, 带有标准调用后缀(@NN)的符号会被剥掉后缀后导出. <br /><br />`--base-file FILE' <br />使用FILE作为文件名,该文件是存放用'dlltool'产生 DLL文件时所需的所有重定位符的基地址的.(这 <br />个选面是i386 PE平台所专有的] <br /><br />`--dll' <br />创建一个DLL文件而不是一个常规可执行文件. 你可能在一个给出的'.def'文件中使用'-shared'或指 <br />定'LIBRARY'. <br /><br />`--enable-stdcall-fixup' <br />`--disable-stdcall-fixup' <br />如果连接器发现有符号不能解析, 它会试图进行'失真连接',即寻找另一个定义的符号,它们只是在 <br />符号名的格式上不同(cdecl vs stdcall),并把符号解析为找到的这个符号. 比如, 一个未定义的符 <br />号'_foo'可能被连接到函数'_foo@12', 或者一个未定义的符号'_bar@16'可能被连接到函数'_bar'. <br />如果连接器这么做了, 它会打印出一条警告信息, 因为在正常情况下,这会连接失败, 但有时,由第三 <br />方库产生的导入库可能需要这个特性. 如果你指定了'--enable-stdcall-fixup', 这个特性会被完全 <br />开启,警告信息也不会打印出来. 如果你指定了'--disable-stdcall-fixup',这个特性被关闭,而且这 <br />样的错误匹配会被认为是个错误. <br /><br />`--export-all-symbols' <br />如果给出这个选项,目标中所有由DLL建立的全局符号会被DLL导出. 注意这是缺省情况,否则没有任何 <br />符号被导出. 如果符号由DEF文件显式地导出,或由函数本身的属性隐式地导出, 缺省情况是除非选项 <br />给出,否则不导出任何其他的符号. 注意符号`DllMain@12',`DllEntryPoint@0', <br /><a href="mailto:`DllMainCRTStartup@12'">`DllMainCRTStartup@12'</a>和`impure_ptr'不会自动被导出.而且,由其他的DLL导入的符号也不会被再次导出, 还有指定DLL内部布局的符号,比如那些以'_head_'开头,或者以'_iname'结尾的符号也不会 被导出.还有,'libgcc','libstd++','libmingw32'或'crtX.o'中的符号也不会被导出. ...... <br /><br />环境变量 <br />===================== <br /><br />你可以通过环境变量`GNUTARGET', `LDEMULATION'和`COLLECT_NO_DEMANGLE'改变'ld'的行为. <br /><br />`GNUTARGET'在你没有使用'-b'(或者它的同义词'--format')的时候,决定输入文件的格式. 它的值应当是BFD中关于输入格式的一个名字. 如果环境中没有'GNUTARGET'变量, 'ld'使用目标平台的缺省格式. 如果'GNUTARGET'被设为'default', 那BFD就会通过检查二进制的输入文件来找到输入格式; 这个方法通常会成功, 但会有潜在的不明确性, 因为没有办法保证指定一个目标文件格式的魔数总是唯一的. 但是, 在每一个系统上的BFD配置程序会把这个系统的常规格式放在搜索列表的首位, 所以不明确性可以通过这种惯列来解决. <br /><br />`LDEMULATION'在你没有使用'-m'选项的时候决定缺省的模拟器. 模拟器可以影响到连接器行为的很多方面, 特别是连接器的缺省连接脚本. 你可以通过'--verbose'或'-V'选项列出所有可用的模拟器. 如果'-m'选项没有使用, 而且`LDEMULATION'环境变量没有定义, 缺省的模拟器跟连接器如何被配置有关. <br /><br />一般地,连接器缺省状况下会重构符号.但是,如果在环境中设置了`COLLECT_NO_DEMANGLE', 那缺省状态下就不会重构符号.这个环境变量在GCC的连接包装程序中会以相似的方式被使用. 这个缺省的行为可以被'--demangle' 或'--no-demangle'选项覆盖. <br /><br />连接脚本 <br />************** <br /><br />每个连接都被一个'连接脚本'所控制. 这个脚本是用连接命令语言书写的. <br /><br />连接脚本的一个主要目的是描述输入文件中的节如何被映射到输出文件中,并控制输出文件的内存排布. 几乎所有的连接脚本只做这两件事情. 但是,在需要的时候,连接器脚本还可以指示连接器执行很多其他的操作.这通过下面描述的命令实现. <br /><br />连接器总是使用连接器脚本的.如果你自己不提供, 连接器会使用一个缺省的脚本,这个脚本是被编译进连接器可执行文件的. 你可以使用'--verbose'命令行选项来显示缺省的连接器脚本的内容. 某些命令行选项,比如 <br />'-r'或'-N', 会影响缺省的连接脚本. <br /><br />你可以过使用'-T'命令行选项来提供你自己的连接脚本. 当你这么做的时候, 你的连接脚本会替换缺省的连接脚本. <br /><br />你也可以通过把连接脚本作为一个连接器的输入文件来隐式地使用它,就象它们是一个被连接的文件一样. <br /><br />基本的连接脚本的概念 <br />============================ <br /><br />我们需要定义一些基本的概念与词汇以描述连接脚本语言. <br /><br />连接器把多个输入文件合并成单个输出文件. 输出文件和输入文件都以一种叫做'目标文件格式'的数据格式形式存在. 每一个文件被叫做'目标文件'. 输出文件经常被叫做'可执行文件',但是由于需要,我们也把它叫做目标文件. 每一个目标文件中,在其它东西之间,有一个节列表.我们有时把输入文件的节叫做输入节; 相似的,输出文件中的一个节经常被叫做输出节. <br /><br />一个目标文件中的每一个节都有一个名字和一个大小尺寸. 大多数节还有一个相关的数据块, 称为节内容. 某一个节可能被标式讵'loadable',含义是在输出文件被执行时,这个节应当被载入到内存中去. 一个没有内容的节可能是'allocatable', 含义是内存中必须为这个节开辟一块空间,但是没有实际的内容载入到这里(在某些情况下,这块内存必须被标式讵零). 一个既不是loadable也不是allocatable的节一般含有一些调试信息. <br /><br />每一个loadable或allocatable的输出节有两个地址. 第一个是'VMA'或称为虚拟内存地址. 这是当输出文件运行时节所拥有的地址. 第二个是&quot;LMA', 或称为载入内存地址. 这个节即将要载入的内存地址. 这大多数情况下这两个地址是相同的. 它们两个有可能不同的一个例子是当一个数据节在ROM中时, 当程序启动时,被拷贝到RAM中(这个技术经常被用在基于ROM的系统中进行全局变量的初始化). 在这种情况下, ROM地址就是LMA, 而RAM地址就是VMA. <br /><br />你可以通过使用带有'-h'选项的'objdump'来察看目标文件中的节. <br /><br />每一个目标文件还有一个关于符号的列表, 被称为'符号表'. 一个符号可能是定义过了的,也可能是未定义的. <br />每一个符号有一个名字, 而且每一个定义的符号有一个地址. 如果你把一个C/C++程序编译为一个目标文件,对于每一个定义的函数和全局或静态变量,你为得到一个定义的符号. 每一个在输入文件中只是一个引用而未定义的函数或全局变量会变成一个未定义的符号. <br /><br />你可以使用'nm'程序来看一个目标文件中的符号, 或者使用'objdump'程序带有'-t'选项. <br /><br />连接脚本的格式 <br />==================== <br /><br />连接脚本是文本文件. <br /><br />你写了一系列的命令作为一个连接脚本. 每一个命令是一个带有参数的关键字,或者是一个对符号的赋值. 你可以用分号分隔命令. 空格一般被忽略. <br /><br />文件名或格式名之类的字符串一般可以被直接键入. 如果文件名含有特殊字符,比如一般作为分隔文件名用的逗号, 你可以把文件名放到双引号中. 文件名中间无法使用双引号.</div><div class="postcolor"><br />你可以象在C语言中一样,在连接脚本中使用注释, 用'/*'和'*/'隔开. 就像在C中,注释在语法上等同于空格. <br /><br />简单的连接脚本示例 <br />============================ <br /><br />许多脚本是相当的简单的. <br /><br />可能的最简单的脚本只含有一个命令: 'SECTIONS'. 你可以使用'SECTIONS'来描述输出文件的内存布局. <br /><br />'SECTIONS'是一个功能很强大的命令. 这里这们会描述一个很简单的使用. 让我们假设你的程序只有代码节, 初始化过的数据节, 和未初始化过的数据节. 这些会存在于'.text','.data'和'.bss'节, 另外, 让我们进一步假设在你的输入文件中只有这些节. <br /><br />对于这个例子, 我们说代码应当被载入到地址'0x10000'处, 而数据应当从0x8000000处开始. 下面是一个实现这个功能的脚本: <br /><br />SECTIONS <br />{ <br />. = 0x10000; <br />.text : { *(.text) } <br />. = 0x8000000; <br />.data : { *(.data) } <br />.bss : { *(.bss) } <br />} <br /><br />你使用关键字'SECTIONS'写了这个SECTIONS命令, 后面跟有一串放在花括号中的符号赋值和输出节描述的内容. <br /><br />上例中, 在'SECTIONS'命令中的第一行是对一个特殊的符号'.'赋值, 这是一个定位计数器. 如果你没有以其它的方式指定输出节的地址(其他方式在后面会描述), 那地址值就会被设为定位计数器的现有值. 定位计数器然后被加上输出节的尺寸. 在'SECTIONS'命令的开始处, 定位计数器拥有值'0'. <br /><br />第二行定义一个输出节,'.text'. 冒号是语法需要,现在可以被忽略. 节名后面的花括号中,你列出所有应当被放入到这个输出节中的输入节的名字. '*'是一个通配符,匹配任何文件名. 表达式'*(.text)'意思是所有的输入文件中的'.text'输入节. <br /><br />因为当输出节'.text'定义的时候, 定位计数器的值是'0x10000',连接器会把输出文件中的'.text'节的地址设为'0x10000'. <br /><br />余下的内容定义了输出文件中的'.data'节和'.bss'节. 连接器会把'.data'输出节放到地址'0x8000000'处. 连接器放好'.data'输出节之后, 定位计数器的值是'0x8000000'加上'.data'输出节的长度. 得到的结果是连接器会把'.bss'输出节放到紧接'.data'节后面的位置. <br /><br />连接器会通过在必要时增加定位计数器的值来保证每一个输出节具有它所需的对齐. 在这个例子中, 为'.text'和'.data'节指定的地址会满足对齐约束, 但是连接器可能会需要在'.data'和'.bss'节之间创建一个小的缺口. <br /><br />就这样,这是一个简单但完整的连接脚本. <br /><br />简单的连接脚本命令. <br />============================= <br /><br />在本章中,我们会描述一些简单的脚本命令. <br /><br />设置入口点. <br />----------------------- <br /><br />在运行一个程序时第一个被执行到的指令称为&quot;入口点&quot;. 你可以使用'ENTRY'连接脚本命令来设置入口点.参数是一个符号名: <br />ENTRY(SYMBOL) <br /><br />有多种不同的方法来设置入口点.连接器会通过按顺序尝试以下的方法来设置入口点, 如果成功了,就会停止. <br /><br />* `-e'入口命令行选项; <br /><br />* 连接脚本中的`ENTRY(SYMBOL)'命令; <br /><br />* 如果定义了start, 就使用start的值; <br /><br />* 如果存在,就使用'.text'节的首地址; <br /><br />* 地址`0'. <br /><br />处理文件的命令. <br />--------------------------- <br /><br />有几个处理文件的连接脚本命令. <br /><br />`INCLUDE FILENAME' <br />在当前点包含连接脚本文件FILENAME. 在当前路径下或用'-L'选项指定的所有路径下搜索这个文件, <br />你可以嵌套使用'INCLUDE'达10层. <br /><br />`INPUT(FILE, FILE, ...)' <br />`INPUT(FILE FILE ...)' <br />'INPUT'命令指示连接器在连接时包含文件, 就像它们是在命令行上指定的一样. <br /><br />比如,如果你在连接的时候总是要包含文件'subr.o',但是你对每次连接时要在命令行上输入感到厌烦 <br />, 你就可以在你的连接脚本中输入'INPUT (subr.o). <br /><br />事实上,如果你喜欢,你可以把你所有的输入文件列在连接脚本中, 然后在连接的时候什么也不需要, <br />只要一个'-T'选项就够了. <br /><br />在一个'系统根前缀'被配置的情况下, 一个文件名如果以'/'字符打头, 并且脚本也存放在系统根 <br />前缀的某个子目录下, 文件名就会被在系统根前缀下搜索. 否则连接器就会企图打开当前目录下的文 <br />件. 如果没有发现, 连接器会通过档案库搜索路径进行搜索. <br /><br />如果你使用了'INPUT (-lFILE)', 'ld'会把文件名转换为'libFILE.a', 就象命令行参数'-l'一样. <br /><br />当你在一个隐式连接脚本中使用'INPUT'命令的时候, 文件就会在连接时连接脚本文件被包含的点上 <br />被包含进来. 这会影响到档案搜索. <br /><br />`GROUP(FILE, FILE, ...)' <br />`GROUP(FILE FILE ...)' <br />除了文件必须全是档案文件之外, 'GROUP'命令跟'INPUT'相似, 它们会被反复搜索,直至没有未定义 <br />的引用被创建. <br /><br />`OUTPUT(FILENAME)' <br />'OUTPUT'命令命名输出文件. 在连接脚本中使用'OUTPUT(FILENAME)'命令跟在命令行中使用'-o <br />FILENAME'命令是完全等效的. 如果两个都使用了, 那命令行选项优先. <br /><br />你可以使用'OUTPUT'命令为输出文件创建一个缺省的文件名,而不是常用的'a.out'. <br /><br />`SEARCH_DIR(PATH)' <br />`SEARCH_DIR'命令给'ld'用于搜索档案文件的路径中再增加新的路径. 使用`SEARCH_DIR(PATH)'跟在命令行上使用'-L PATH'选项是完全等效的. 如果两个都使用了, 那连接器会两个路径都搜索. 用命 <br />令行选项指定的路径首先被搜索. <br /><br />`STARTUP(FILENAME)' <br />除了FILENAME会成为第一个被连接的输入文件, 'STARTUP'命令跟'INPUT'命令完全相似, 就象这个文件是在命令行上第一个被指定的文件一样. 如果在一个系统中, 入口点总是存在于第一个文件中,那 <br />这个就很有用. <br /><br />处理目标文件格式的命令. <br />----------------------------------------- <br /><br />有两个处理目标文件格式的连接脚本命令. <br /><br />`OUTPUT_formAT(BFDNAME)' <br />`OUTPUT_formAT(DEFAULT, BIG, LITTLE)' <br />`OUTPUT_formAT'命令为输出文件使用的BFD格式命名. 使用`OUTPUT_formAT(BFDNAME)'跟在命令行上 <br />使用'-oformat BFDNAME'是完全等效的. 如果两个都使用了, 命令行选项优先. <br /><br />你可在使用`OUTPUT_formAT'时带有三个参数以使用不同的基于'-EB'和'-EL'的命令行选项的格式. <br /><br />如果'-EB'和'-EL'都没有使用, 那输出格式会是第一个参数DEFAULT, 如果使用了'-EB',输出格式会是 <br />第二个参数BIG, 如果使用了'-EL', 输出格式会是第三个参数, LITTLE. <br /><br />比如, 缺省的基于MIPS ELF平台连接脚本使用如下命令: <br /><br />OUTPUT_formAT(elf32-bigmips, elf32-bigmips, elf32-littlemips) <br />这表示缺省的输出文件格式是'elf32-bigmips', 但是当用户使用'-EL'命令行选项的时候, 输出文件就会 <br />被以`elf32-littlemips'格式创建. <br /><br />`TARGET(BFDNAME)' <br />'TARGET'命令在读取输入文件时命名BFD格式. 它会影响到后来的'INPUT'和'GROUP'命令. 这个命令跟在命令行上使用`-b BFDNAME'相似. 如果使用了'TARGET'命令但`OUTPUT_formAT'没有指定, 最后的'TARGET'命令也被用来设置输出文件的格式. <br /><br />其它的连接脚本命令. <br />---------------------------- <br /><br />还有一些其它的连接脚本命令. <br /><br />`ASSERT(EXP, MESSAGE)' <br />确保EXP不等于零,如果等于零, 连接器就会返回一个错误码退出,并打印出MESSAGE. <br /><br />`EXTERN(SYMBOL SYMBOL ...)' <br />强制SYMBOL作为一个无定义的符号输入到输出文件中去. 这样做了,可能会引发从标准库中连接一些 <br />节外的库. 你可以为每一个EXTERN'列出几个符号, 而且你可以多次使用'EXTERN'. 这个命令跟'-u' <br />命令行选项具有相同的效果. <br /><br />`FORCE_COMMON_ALLOCATION' <br />这个命令跟命令行选项'-d'具有相同的效果: 就算指定了一个可重定位的输出文件('-r'),也让'ld' <br />为普通符号分配空间. <br /><br />`INHIBIT_COMMON_ALLOCATION' <br />这个命令跟命令行选项`--no-define-common'具有相同的效果: 就算是一个不可重位输出文件, 也让 <br />'ld'忽略为普通符号分配的空间. <br /><br />`NOCROSSREFS(SECTION SECTION ...)' <br />这个命令在遇到在某些特定的节之间引用的时候会产生一条错误信息. <br /><br />在某些特定的程序中, 特别是在使用覆盖技术的嵌入式系统中, 当一个节被载入内存时,另外一个节 <br />就不会在内存中. 任何在两个节之间的直接引用都会是一个错误. 比如, 如果节1中的代码调用了另 <br />一个节中的一个函数,这就会产生一个错误. <br /><br />`NOCROSSREFS'命令带有一个输出节名字的列表. 如果'ld'遇到任何在这些节之间的交叉引用, 它就 <br />会报告一个错误,并返回一个非零退出码. 注意, `NOCROSSREFS'命令使用输出节名,而不是输入节名. <br /><br />`OUTPUT_ARCH(BFDARCH)' <br />指定一个特定的输出机器架构. 这个参数是BFD库中使用的一个名字. 你可以通过使用带有'-f'选项 <br />的'objdump'程序来查看一个目标文件的架构. <br /><br />为符号赋值. <br />=========================== <br /><br />你可以在一个连接脚本中为一个符号赋一个值. 这会把一个符号定义为一个全局符号. <br /><br />简单的赋值. <br />------------------ <br /><br />你可以使用所有的C赋值符号为一个符号赋值. <br /><br />`SYMBOL = EXPRESSION ;' <br />`SYMBOL += EXPRESSION ;' <br />`SYMBOL -= EXPRESSION ;' <br />`SYMBOL *= EXPRESSION ;' <br />`SYMBOL /= EXPRESSION ;' <br />`SYMBOL &lt;&lt;= EXPRESSION ;' <br />`SYMBOL &gt;&gt;= EXPRESSION ;' <br />`SYMBOL &amp;= EXPRESSION ;' <br />`SYMBOL |= EXPRESSION ;' <br /><br />第一个情况会把SYMBOL定义为值EXPRESSION. 其它情况下, SYMBOL必须是已经定义了的, 而值会作出相应的调整. <br /><br />特殊符号名'.'表示定位计数器. 你只可以在'SECTIONS'命令中使用它. <br /><br />EXPRESSION后面的分号是必须的. <br /><br />表达式下面会定义. <br /><br />你在写表达式赋值的时候,可以把它们作为单独的部分,也可以作为'SECTIONS'命令中的一个语句,或者作为'SECTIONS'命令中输出节描述的一个部分. <br /><br />符号所在的节会被设置成表达式所在的节. <br /><br />下面是一个关于在三处地方使用符号赋值的例子: <br /><br />floating_point = 0; <br />SECTIONS <br />{ <br />.text : <br />{ <br />*(.text) <br />_etext = .; <br />} <br />_bdata = (. + 3) &amp; ~ 3; <br />.data : { *(.data) } <br />} <br /><br />在这个例子中, 符号`floating_point'被定义为零. 符号'-etext'会被定义为前面一个'.text'节尾部的地址. 而符号'_bdata'会被定义为'.text'输出节后面的一个向上对齐到4字节边界的一个地址值. <br /><br />PROVIDE <br />------- <br /><br />在某些情况下, 一个符号被引用到的时候只在连接脚本中定义,而不在任何一个被连接进来的目标文件中定义. 这种做法是比较明智的. 比如, 传统的连接器定义了一个符号'etext'. 但是, ANSI C需要用户能够把'etext'作为一个函数使用而不会产生错误. 'PROVIDE'关键字可以被用来定义一个符号, 比如'etext', 这个定义只在它被引用到的时候有效,而在它被定义的时候无效.语法是 `PROVIDE(SYMBOL = EXPRESSION)'. <br /><br />下面是一个关于使用'PROVIDE'定义'etext'的例子: <br /><br />SECTIONS <br />{ <br />.text : <br />{ <br />*(.text) <br />_etext = .; <br />PROVIDE(etext = .); <br />} <br />} <br /><br />在这个例子中, 如果程序定义了一个'_etext'(带有一个前导下划线), 连接器会给出一个重定义错误. 如果, 程序定义了一个'etext'(不带前导下划线), 连接器会默认使用程序中的定义. 如果程序引用了'etext'但不定义它, 连接器会使用连接脚本中的定义. <br /><br />SECTIONS命令 <br />================ <br /><br />'SECTIONS'命令告诉连接器如何把输入节映射到输出节, 并如何把输出节放入到内存中. <br /><br />'SECTIONS'命令的格式如下: <br /><br />SECTIONS <br />{ <br />SECTIONS-COMMAND <br />SECTIONS-COMMAND <br />... <br />} <br /><br />每一个SECTIONS-COMMAND可能是如下的一种: <br /><br />* 一个'ENTRY'命令. <br /><br />* 一个符号赋值. <br /><br />* 一个输出节描述. <br /><br />* 一个重叠描述. <br /><br />'ENTRY'命令和符号赋值在'SECTIONS'命令中是允许的, 这是为了方便在这些命令中使用定位计数器. 这也可以让连接脚本更容易理解, 因为你可以在更有意义的地方使用这些命令来控制输出文件的布局. <br /><br />输出节描述和重叠描述在下面描述. <br /><br />如果你在连接脚本中不使用'SECTIONS'命令, 连接器会按在输入文件中遇到的节的顺序把每一个输入节放到同名的输出节中. 如果所有的输入节都在第一个文件中存在,那输出文件中的节的顺序会匹配第一个输入文件中的节的顺序. 第一个节会在地址零处. <br /><br />输出节描述 <br />-------------------------- <br /><br />一个完整的输出节的描述应该是这个样子的: <br /><br />SECTION [ADDRESS] [(TYPE)] : [AT(LMA)] <br />{ <br />OUTPUT-SECTION-COMMAND <br />OUTPUT-SECTION-COMMAND <br />... <br />} [&gt;REGION] [AT&gt;LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP] <br /><br />大多数输出节不使用这里的可选节属性. <br /><br />SECTION边上的空格是必须的, 所以节名是明确的. 冒号跟花括号也是必须的. 断行和其他的空格是可选的. <br /><br />每一个OUTPUT-SECTION-COMMAND可能是如下的情况: <br /><br />* 一个符号赋值. <br /><br />* 一个输入节描述. <br /><br />* 直接包含的数据值. <br /><br />* 一个特定的输出节关键字. <br /><br />输出节名. <br />------------------- <br /><br />输出节的名字是SECTION. SECTION必须满足你的输出格式的约束. 在一个只支持限制数量的节的格式中,比如'a.out',这个名字必须是格式支持的节名中的一个(比如, 'a.out'只允许'.text', '.data'或'.bss').如果输出格式支持任意数量的节, 但是只支持数字,而没有名字(就像Oasys中的情况), 名字应当以一个双引号中的数值串的形式提供.一个节名可以由任意数量的字符组成,但是一个含有任意非常用字符(比如逗号)的字句必须用双引号引起来. <br /><br />输出节描述 <br />-------------------------- <br /><br />ADDRESS是关于输出节中VMS的一个表达式. 如果你不提供ADDRESS, 连接器会基于REGION(如果存在)设置它,或者基于定位计数器的当前值. <br /><br />如果你提供了ADDRESS, 那输出节的地址会被精确地设为这个值. 如果你既不提供ADDRESS也不提供REGION, 那输出节的地址会被设为当前的定位计数器向上对齐到输出节需要的对齐边界的值. 输出节的对齐要求是所有输入节中含有的对齐要求中最严格的一个. <br /><br />比如: <br />.text . : { *(.text) } <br /><br />和 <br />.text : { *(.text) } <br /><br />有细微的不同. 第一个会把'.text'输出节的地址设为当前定位计数器的值. 第二个会把它设为定位计数器的当前值向上对齐到'.text'输入节中对齐要求最严格的一个边界. <br /><br />ADDRESS可以是任意表达式; 比如,如果你需要把节对齐对0x10字节边界,这样就可以让低四字节的节地址值为零, 你可以这样做: <br /><br />.text ALIGN(0x10) : { *(.text) } <br /><br />这个语句可以正常工作,因为'ALIGN'返回当前的定位计数器,并向上对齐到指定的值. <br /><br />指定一个节的地址会改变定位计数器的值. <br /><br />输入节描述 <br />------------------------- <br /><br />最常用的输出节命令是输入节描述. <br /><br />输入节描述是最基本的连接脚本操作. 你使用输出节来告诉连接器在内存中如何布局你的程序. 你使用输入节来告诉连接器如何把输入文件映射到你的内存中. <br /><br />输入节基础 <br />--------------------------- <br /><br />一个输入节描述由一个文件名后跟有可选的括号中的节名列表组成. <br /><br />文件名和节名可以通配符形式出现, 这个我们以后再介绍. <br /><br />最常用的输入节描述是包含在输出节中的所有具有特定名字的输入节. 比如, 包含所有输入'.text'节,你可以这样写: <br /><br />*(.text) <br /><br />这里,'*'是一个通配符,匹配所有的文件名. 为把一部分文件排除在匹配的名字通配符之外, EXCLUDE_FILE可以用来匹配所有的除了在EXCLUDE_FILE列表中指定的文件.比如: <br /><br />(*(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors)) <br /><br />会让除了`crtend.o'文件和`otherfile.o'文件之外的所有的文件中的所有的.ctors节被包含进来. <br /><br />有两种方法包含多于一个的节: <br /><br />*(.text .rdata) <br />*(.text) *(.rdata) <br /><br />上面两句的区别在于'.text'和'.rdata'输入节的输出节中出现的顺序不同. 在第一个例子中, 两种节会交替出现,并以连接器的输入顺序排布. 在第二个例子中,所有的'.text'输入节会先出现,然后是所有的'.rdata'节. <br /><br />你可以指定文件名,以从一个特定的文件中包含节. 如果一个或多个你的文件含有特殊的数据在内存中需要特殊的定位,你可以这样做. 比如: <br /><br />data.o(.data) <br /><br />如果你使用一个不带有节列表的文件名, 那输入文件中的所有的节会被包含到输出节中. 通常不会这样做, 但是在某些场合下这个可能非常有用. 比如: <br /><br />data.o <br /><br />当你使用一个不含有任何通配符的文件名时, 连接器首先会查看你是否在连接命令行上指定了文件名或者在'INPUT'命令中. 如果你没有, 连接器会试图把这个文件作为一个输入文件打开, 就像它在命令行上出现一样.注意这跟'INPUT'命令不一样, 因为连接器会在档案搜索路径中搜索文件. <br /><br />输入节通配符 <br />--------------------------------- <br /><br />在一个输入节描述中, 文件名或者节名,或者两者同时都可以是通配符形式. <br /><br />文件名通配符'*'在很多例子中都可以看到,这是一个简单的文件名通配符形式. <br /><br />通配符形式跟Unix Shell中使用的一样. <br /><br />`*' <br />匹配任意数量的字符. <br /><br />`?' <br />匹配单个字符. <br /><br />`[CHARS]' <br />匹配CHARS中的任意单个字符; 字符'-'可以被用来指定字符的方讧, 比如[a-z]匹配任意小字字符. <br /><br />`\' <br />转义其后的字符. <br /><br />当一个文件名跟一个通配符匹配时, 通配符字符不会匹配一个'/'字符(在UNIX系统中用来分隔目录名), 一个含有单个'*'字符的形式是个例外; 它总是匹配任意文件名, 不管它是否含有'/'. 在一个节名中, 通配符字 <br />符会匹配'/'字符. <br /><br />文件名通配符只匹配那些在命令行或在'INPUT'命令上显式指定的文件. 连接器不会通过搜索目录来展开通配符. <br /><br />如果一个文件名匹配多于一个通配符, 或者如果一个文件名显式出现同时又匹配了一个通配符, 连接器会使用第一次匹配到的连接脚本. 比如, 下面的输入节描述序列很可能就是错误的,因为'data.o'规则没有被使用: <br /><br />.data : { *(.data) } <br />.data1 : { data.o(.data) } <br /><br />通常, 连接器会把匹配通配符的文件和节按在连接中被看到的顺序放置. 你可以通过'SORT'关键字改变它, 它出现在括号中的通配符之前(比如, 'SORT(.text*)'). 当'SORT'关键字被使用时, 连接器会在把文件和节放到输出文件中之前按名字顺序重新排列它们. <br /><br />如果你对于输入节被放置到哪里去了感到很困惑, 那可以使用'-M'连接选项来产生一个位图文件. 位图文件会精确显示输入节是如何被映射到输出节中的. <br /><br />这个例子显示了通配符是如何被用来区分文件的. 这个连接脚本指示连接器把所有的'.text'节放到'.text'中, 把所有的'.bss'节放到'.bss'. 连接器会把所有的来自文件名以一个大写字母开始的文件中的'.data'节放进'.DATA'节中; 对于所有其他文件, 连接器会把'.data'节放进'.data'节中. <br /><br />SECTIONS { <br />.text : { *(.text) } <br />.DATA : { [A-Z]*(.data) } <br />.data : { *(.data) } <br />.bss : { *(.bss) } <br />} <br /><br />输入节中的普通符号. <br />----------------------------------- <br /><br />对于普通符号,需要一个特殊的标识, 因为在很多目标格式中, 普通符号没有一个特定的输入节. 连接器会把普通符号处理成好像它们在一个叫做'COMMON'的节中. <br /><br />你可能像使用带有其他输入节的文件名一样使用带有'COMMON'节的文件名。你可以通过这个把来自一个特定输入文件的普通符号放入一个节中，同时把来自其它输入文件的普通符号放入另一个节中。 <br /><br />在大多数情况下，输入文件中的普通符号会被放到输出文件的'.bss'节中。比如： <br /><br />.bss { *(.bss) *(COMMON) } <br /><br />有些目标文件格式具有多于一个的普通符号。比如，MIPS ELF目标文件格式区分标准普通符号和小普通符号。在这种情况下，连接器会为其他类型的普通符号使用一个不同的特殊节名。 在MIPS ELF的情况中， 连接器为标准普通符号使用'COMMON'，并且为小普通符号使用'.common'。这就允许你把不同类型的普通符号映射到内存的不同位置。 <br /><br />在一些老的连接脚本上，你有时会看到'[COMMON]'。这个符号现在已经过时了， 它等效于'*(COMMON)'。 <br /><br />输入节和垃圾收集 <br />--------------------------------------- <br /><br />当连接时垃圾收集正在使用中时（'--gc-sections')，这在标识那些不应该被排除在外的节时非常有用。这 <br />是通过在输入节的通配符入口外面加上'KEEP()'实现的，比如'KEEP(*(.init))'或者'KEEP(SORT(*)(.sorts)) <br />'。 <br /><br />输入节示例 <br />--------------------- <br /><br />接下来的例子是一个完整的连接脚本。它告诉连接器去读取文件'all.o'中的所有节，并把它们放到输出节'outputa'的开始位置处， 该输出节是从位置'0x10000'处开始的。 从文件'foo.o'中来的所有节'.input1'在同一个输出节中紧密排列。 从文件'foo.o'中来的所有节'.input2'全部放入到输出节'outputb'中，后面跟上从'foo1.o'中来的节'.input1'。来自所有文件的所有余下的'.input1'和'.input2'节被写入到输出节'outputc'中。 <br /><br />SECTIONS { <br />outputa 0x10000 : <br />{ <br />all.o <br />foo.o (.input1) <br />} <br />outputb : <br />{ <br />foo.o (.input2) <br />foo1.o (.input1) <br />} <br />outputc : <br />{ <br />*(.input1) <br />*(.input2) <br />} <br />} <br /><br />输出节数据 <br />------------------- <br /><br />你可以通过使用输出节命令'BYTE','SHORT','LONG','QUAD',或者'SQUAD'在输出节中显式包含几个字节的数据每一个关键字后面都跟上一个圆括号中的要存入的值。表达式的值被存在当前的定位计数器的值处。 <br /><br />‘BYTE’，‘SHORT’，‘LONG’‘QUAD’命令分别存储一个，两个，四个，八个字节。存入字节后，定位计数器的值加上被存入的字节数。 <br /><br />比如，下面的命令会存入一字节的内容1,后面跟上四字节，其内容是符号'addr'的值。 <br /><br />BYTE(1) <br />LONG(addr) <br /><br />当使用64位系统时，‘QUAD’和‘SQUAD’是相同的；它们都会存储8字节，或者说是64位的值。而如果软硬件系统都是32位的，一个表达式就会被作为32位计算。在这种情况下，‘QUAD’存储一个32位值，并把它零扩展到64位， 而‘SQUAD’会把32位值符号扩展到64位。 <br /><br />如果输出文件的目标文件格式有一个显式的endianness，它在正常的情况下，值就会被以这种endianness存储当一个目标文件格式没有一个显式的endianness时, 值就会被以第一个输入目标文件的endianness存储。 <br /><br />注意， 这些命令只在一个节描述内部才有效，而不是在它们之间， 所以，下面的代码会使连接器产生一个错误信息： <br /><br />SECTIONS { .text : { *(.text) } LONG(1) .data : { *(.data) } } <br /><br />而这个才是有效的： <br /><br />SECTIONS { .text : { *(.text) ; LONG(1) } .data : { *(.data) } } <br /><br />你可能使用‘FILL’命令来为当前节设置填充样式。它后面跟有一个括号中的表达式。任何未指定的节内内存区域（比如，因为输入节的对齐要求而造成的裂缝）会以这个表达式的值进行填充。一个'FILL'语句会覆盖到它本身在节定义中出现的位置后面的所有内存区域；通过引入多个‘FILL’语句，你可以在输出节的不同位置拥有不同的填充样式。 <br /><br />这个例子显示如何在未被指定的内存区域填充'0x90'： <br /><br />FILL(0x90909090) <br /><br />‘FILL’命令跟输出节的‘=FILLEXP’属性相似，但它只影响到节内跟在‘FILL’命令后面的部分，而不是整个节。如果两个都用到了，那‘FILL’命令优先。 <br /><br />输出节关键字 <br />----------------------- <br /><br />有两个关键字作为输出节命令的形式出现。 <br /><br />`CREATE_OBJECT_SYMBOLS' <br />这个命令告诉连接器为每一个输入文件创建一个符号。而符号的名字正好就是相关输入文件的名字。 <br />而每一个符号的节就是`CREATE_OBJECT_SYMBOLS'命令出现的那个节。 <br /><br />这个命令一直是a.out目标文件格式特有的。 它一般不为其它的目标文件格式所使用。 <br /><br />`CONSTRUCTORS' <br />当使用a.out目标文件格式进行连接的时候， 连接器使用一组不常用的结构以支持C++的全局构造函 <br />数和析构函数。当连接不支持专有节的目标文件格式时， 比如ECOFF和XCOFF，连接器会自动辩识C++全局构造函数和析构函数的名字。对于这些目标文件格式，‘CONSTRUCTORS’命令告诉连接器把构造函数信息放到‘CONSTRUCTORS’命令出现的那个输出节中。对于其它目标文件格式，‘CONSTRUCTORS’ <br />命令被忽略。 <br /><br />符号`__CTOR_LIST__'标识全局构造函数的开始，而符号`__DTOR_LIST'标识结束。这个列表的第一个WORD是入口的数量，紧跟在后面的是每一个构造函数和析构函数的地址，再然后是一个零WORD。编译器必须安排如何实际运行代码。对于这些目标文件格式，GNU C++通常从一个`__main'子程序中调用构造函数，而对`__main'的调用自动被插入到`main'的启动代码中。GNU C++通常使用'atexit'运行析构函数，或者直接从函数'exit'中运行。 <br /><br />对于像‘COFF’或‘ELF’这样支持专有节名的目标文件格式，GNU C++通常会把全局构造函数与析构函数的地址值放到'.ctors'和'.dtors'节中。把下面的代码序列放到你的连接脚本中去，这样会构建 <br />出GNU C++运行时代码希望见到的表类型。 <br /><br />__CTOR_LIST__ = .; <br />LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) <br />*(.ctors) <br />LONG(0) <br />__CTOR_END__ = .; <br />__DTOR_LIST__ = .; <br />LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) <br />*(.dtors) <br />LONG(0) <br />__DTOR_END__ = .; <br /><br />如果你正使用GNU C++支持来进行优先初始化，那它提供一些可以控制全局构造函数运行顺序的功能，你必须在连接时给构造函数排好序以保证它们以正确的顺序被执行。当使用'CONSTRUCTORS'命令时，替代为`SORT(CONSTRUCTORS)'。当使用'.ctors'和'dtors'节时，使用`*(SORT(.ctors))'和`*(SORT(.dtors))' 而不是`*(.ctors)'和`*(.dtors)'。 <br /><br />通常，编译器和连接器会自动处理这些事情，并且你不必亲自关心这些事情。但是，当你正在使用 <br />C++，并自己编写连接脚本时，你可能就要考虑这些事情了。 <br /><br />输出节的丢弃。 <br />------------------------- <br /><br />连接器不会创建那些不含有任何内容的输出节。这是为了引用那些可能出现或不出现在任何输入文件中的输入节时方便。比如： <br /><br />.foo { *(.foo) } <br /><br />如果至少在一个输入文件中有'.foo'节，它才会在输出文件中创建一个'.foo'节 <br /><br />如果你使用了其它的而不是一个输入节描述作为一个输出节命令，比如一个符号赋值，那这个输出节总是被创建，即使没有匹配的输入节也会被创建。 <br /><br />一个特殊的输出节名`/DISCARD/'可以被用来丢弃输入节。任何被分配到名为`/DISCARD/'的输出节中的输入节不包含在输出文件中。 <br /><br />输出节属性 <br />------------------------- <br /><br />上面，我们已经展示了一个完整的输出节描述，看下去就象这样： <br /><br />SECTION [ADDRESS] [(TYPE)] : [AT(LMA)] <br />{ <br />OUTPUT-SECTION-COMMAND <br />OUTPUT-SECTION-COMMAND <br />... <br />} [&gt;REGION] [AT&gt;LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP] <br /><br />我们已经介绍了SECTION, ADDRESS, 和OUTPUT-SECTION-COMMAND. 在这一节中，我们将介绍余下的节属性。 <br /><br />输出节类型 <br />................... <br /><br />每一个输出节可以有一个类型。类型是一个放在括号中的关键字，已定义的类型如下所示： <br /><br />`NOLOAD' <br />这个节应当被标式讵不可载入，所以当程序运行时，它不会被载入到内存中。 <br /><br />`DSECT' <br />`COPY' <br />`INFO' <br />`OVERLAY' <br />支持这些类型名只是为了向下兼容，它们很少使用。它们都具有相同的效果：这个节应当被标式讵不 <br />可分配，所以当程序运行时，没有内存为这个节分配。 <br /><br />连接器通常基于映射到输出节的输入节来设置输出节的属性。你可以通过使用节类型来重设这个属性， <br />比如，在下面的脚本例子中，‘ROM’节被定址在内存地址零处，并且在程序运行时不需要被载入。 <br />‘ROM’节的内容会正常出现在连接输出文件中。 <br /><br />SECTIONS { <br />ROM 0 (NOLOAD) : { ... } <br />... <br />} <br /><br />输出节LMA <br />.................. <br /><br />每一个节有一个虚地址（VMA）和一个载入地址（LMA）；出现在输出节描述中的地址表达式设置VMS <br /><br />连接器通常把LMA跟VMA设成相等。你可以通过使用‘AT’关键字改变这个。跟在关键字‘AT’后面的表达式LMA指定节的载入地址。或者，通过`AT&gt;LMA_REGION'表达式， 你可以为节的载入地址指定一个内存区域。 <br /><br />这个特性是为了便于建立ROM映像而设计的。比如，下面的连接脚本创建了三个输出节：一个叫做‘.text’从地址‘0x1000’处开始，一个叫‘.mdata’，尽管它的VMA是'0x2000'，它会被载入到'.text'节的后面，最后一个叫做‘.bss’是用来放置未初始化的数据的，其地址从'0x3000'处开始。符号'_data'被定义为值'0x2000', 它表示定位计数器的值是VMA的值，而不是LMA。 <br /><br />SECTIONS <br />{ <br />.text 0x1000 : { *(.text) _etext = . ; } <br />.mdata 0x2000 : <br />AT ( ADDR (.text) + SIZEOF (.text) ) <br />{ _data = . ; *(.data); _edata = . ; } <br />.bss 0x3000 : <br />{ _bstart = . ; *(.bss) *(COMMON) ; _bend = . ;} <br />} <br /><br />这个连接脚本产生的程序使用的运行时初始化代码会包含象下面所示的一些东西，以把初始化后的数据从ROM映像中拷贝到它的运行时地址中去。注意这节代码是如何利用好连接脚本定义的符号的。 <br /><br />extern char _etext, _data, _edata, _bstart, _bend; <br />char *src = &amp;_etext; <br />char *dst = &amp;_data; <br /><br />/* ROM has data at end of text; copy it. */ <br />while (dst &lt; &amp;_edata) { <br />*dst++ = *src++; <br />} <br /><br />/* Zero bss */ <br />for (dst = &amp;_bstart; dst&lt; &amp;_bend; dst++) <br />*dst = 0; <br /><br />输出节区域 <br />..................... <br /><br />你可以通过使用`&gt;REGION'把一个节赋给前面已经定义的一个内存区域。 <br /><br />这里有一个简单的例子: <br /><br />MEMORY { rom : ORIGIN = 0x1000, LENGTH = 0x1000 } <br />SECTIONS { ROM : { *(.text) } &gt;rom } <br /><br />输出节Phdr <br />... </div></p>]]>
				</description>
				<guid isPermaLink="false">
					1777309@http://sanecat.bokee.com/
				</guid>
				<dc:subject></dc:subject>
				<dc:date>2005-06-4  11:20</dc:date>
			</item>
					<item>
				<title>
					<![CDATA[6月1日，2日，3日- -]]>
				</title>
				<link>http://sanecat.bokee.com/1776946.html</link>
				<description>
					<![CDATA[<p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 66.5pt; TEXT-INDENT: -66.5pt; mso-char-indent-count: -6.31"><font size="3"><font face="Times New Roman"><chsdate w:st="on" year="2005" month="6" day="1" islunardate="False" isrocdate="False"><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="COLOR: blue">2005-06-01</span></b></chsdate><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="COLOR: blue"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span></b><span lang="EN-US">Now, there is a big problem that our kernel <chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">2.4.27</chsdate> can drive the eth0 correctly because there is no SMC91111 driver in this kernel. Though song xing jia had already built a SMC91111.o and insmod it into kernel, it can’t work yet.<b style="mso-bidi-font-weight: normal"><span style="COLOR: blue"><p /></span></b></span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 65.4pt; TEXT-INDENT: -2.4pt; mso-char-indent-count: -.23; mso-para-margin-left: 6.0gd"><span lang="EN-US"><font face="Times New Roman" size="3">Classmate Zhang Wei downloaded a kernel source code from altera, which is just the Linux demo provided by altera (MontaVista Linux 2.1). <span style="mso-spacerun: yes">&nbsp;</span>So, some of us can provisionally steer clear of the problem of eth0 can’t work to build application on Monta Vista Linux 2.1.</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 65.4pt; TEXT-INDENT: -2.4pt; mso-char-indent-count: -.23; mso-para-margin-left: 6.0gd"><span lang="EN-US"><p><font face="Times New Roman" size="3">&nbsp;</font></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 65.4pt; TEXT-INDENT: -2.4pt; mso-char-indent-count: -.23; mso-para-margin-left: 6.0gd"><span lang="EN-US"><p><font face="Times New Roman" size="3">&nbsp;</font></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 66.95pt; TEXT-INDENT: -66.95pt; mso-char-indent-count: -6.35"><font size="3"><font face="Times New Roman"><chsdate w:st="on" year="2005" month="6" day="2" islunardate="False" isrocdate="False"><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="COLOR: blue">2005-06-02</span></b></chsdate><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="COLOR: blue"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span></b><span lang="EN-US">Now we want to download kernel image (zImage.hex) and file system image (jffs2.image) via network running TCP/IP (eth0). While when we run:</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 281.4pt; TEXT-INDENT: -281.4pt; mso-char-indent-count: -26.8"><span lang="EN-US"><font size="3"><font face="Times New Roman"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;</span><span style="COLOR: fuchsia">Epxa1# tftpboot 00200000 “jffs2.image”<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>// download jffs2.image to 0x<chmetcnv w:st="on" unitname="in" sourcevalue="200000" hasspace="True" negative="False" numbertype="1" tcsc="0">200000 in</chmetcnv> <p /></span></font></font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 281.4pt; TEXT-INDENT: -3.15pt; mso-char-indent-count: -.3; mso-para-margin-left: 26.5gd"><span lang="EN-US" style="COLOR: fuchsia"><font size="3"><font face="Times New Roman">// SDRAM<p /></font></font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 68.25pt; TEXT-INDENT: -68.25pt; mso-char-indent-count: -6.5"><span lang="EN-US"><font size="3"><font face="Times New Roman"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>and feel good to hope it can finish downloading t