﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-terrycpp</title><link>http://www.cppblog.com/terrycpp/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 09 Apr 2026 02:37:05 GMT</lastBuildDate><pubDate>Thu, 09 Apr 2026 02:37:05 GMT</pubDate><ttl>60</ttl><item><title>又回来了，小记下</title><link>http://www.cppblog.com/terrycpp/archive/2011/10/03/157448.html</link><dc:creator>terrycpp</dc:creator><author>terrycpp</author><pubDate>Mon, 03 Oct 2011 15:39:00 GMT</pubDate><guid>http://www.cppblog.com/terrycpp/archive/2011/10/03/157448.html</guid><wfw:comment>http://www.cppblog.com/terrycpp/comments/157448.html</wfw:comment><comments>http://www.cppblog.com/terrycpp/archive/2011/10/03/157448.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/terrycpp/comments/commentRss/157448.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/terrycpp/services/trackbacks/157448.html</trackback:ping><description><![CDATA[坏毛病啊，又把这块地荒废了这么久，特回来除除草。<br />感谢老板的出国，让我有机会在大大小小的公司实习了一年，收获了许多。又到了找工的季节，由于实习公司给了offer，就没怎么折腾了，留广州选择也不多，笑看各大侠数offer哈！<br />第一份实习是在一个银行相关的单位做后台开发，工资低得可怜，工作强度也不大，收获是熟悉了一些东西。结束后紧接着到了第二家公司做手机客户端开发，这次纯属酱油：测试，写文档，就是接触不了想做的东西。混两个多月后通过了某外企的两轮电面，去了深圳实习半年。虽然不是做开发，却是最锻炼我的一次。不熟悉且广阔的领域，让我半年来都持续地地在接触新东西，感觉解决问题的能力大有提高。<br />由于个人原因，重新回到了广州实习，做后台开发。由于人手比较紧缺，让我幸运地负责一个模块，导师观察了几天后就放心让我一个人搞定了。一切都很顺利，产品也上线了，小小的成就感也来了。<br />稍微总结下优缺点。<br />优点：<br />1.所关注领域技术还算熟练。<br />2.解决问题能力不错。<br />缺点：<br />1.虽然忙的时候能专注干活，但稍微闲下来就喜欢偷懒。<br />2.工作之余就没读过书了。<br />3.不更新博客。<img src ="http://www.cppblog.com/terrycpp/aggbug/157448.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/terrycpp/" target="_blank">terrycpp</a> 2011-10-03 23:39 <a href="http://www.cppblog.com/terrycpp/archive/2011/10/03/157448.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Problem about apt-get update</title><link>http://www.cppblog.com/terrycpp/archive/2011/01/08/138174.html</link><dc:creator>terrycpp</dc:creator><author>terrycpp</author><pubDate>Sat, 08 Jan 2011 15:44:00 GMT</pubDate><guid>http://www.cppblog.com/terrycpp/archive/2011/01/08/138174.html</guid><wfw:comment>http://www.cppblog.com/terrycpp/comments/138174.html</wfw:comment><comments>http://www.cppblog.com/terrycpp/archive/2011/01/08/138174.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/terrycpp/comments/commentRss/138174.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/terrycpp/services/trackbacks/138174.html</trackback:ping><description><![CDATA[Today I came across a problem about apt-get update.<br>E: Could not get lock /var/lib/apt/lists/lock - open (11 Resource temporarily unavailable)<br>
E: Unable to lock the list directory<br><br>This is because another process like synaptic or update had quit without clean the lock.<br>So .. There will be two ways to solve the problem.<br>1.If the process mentioned above quited without reboot,<br>just $ps -e |grep apt<br>and then.. kill them.<br>2.Remove /var/lib/apt/lists/lock directly..<br><br>There is no Chinese input method in my PC currently,<br>so..<br>Welcome to the English world,and improve my poor English..<br><br><img src ="http://www.cppblog.com/terrycpp/aggbug/138174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/terrycpp/" target="_blank">terrycpp</a> 2011-01-08 23:44 <a href="http://www.cppblog.com/terrycpp/archive/2011/01/08/138174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>新的旅程</title><link>http://www.cppblog.com/terrycpp/archive/2010/12/02/135304.html</link><dc:creator>terrycpp</dc:creator><author>terrycpp</author><pubDate>Thu, 02 Dec 2010 14:46:00 GMT</pubDate><guid>http://www.cppblog.com/terrycpp/archive/2010/12/02/135304.html</guid><wfw:comment>http://www.cppblog.com/terrycpp/comments/135304.html</wfw:comment><comments>http://www.cppblog.com/terrycpp/archive/2010/12/02/135304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/terrycpp/comments/commentRss/135304.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/terrycpp/services/trackbacks/135304.html</trackback:ping><description><![CDATA[决定去一家外企实习，但不是搞开发的。<br>对自己的一次考验，搞得好大有裨益，搞不好就如无头苍蝇了。<br>这次实习不管接触什么，要深入研究。<br>在公司可能锻炼不了编码能力，晚上做毕设的时候好好给力吧！
<img src ="http://www.cppblog.com/terrycpp/aggbug/135304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/terrycpp/" target="_blank">terrycpp</a> 2010-12-02 22:46 <a href="http://www.cppblog.com/terrycpp/archive/2010/12/02/135304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）linux平台gcc和动态共享库基础知识</title><link>http://www.cppblog.com/terrycpp/archive/2010/11/08/133003.html</link><dc:creator>terrycpp</dc:creator><author>terrycpp</author><pubDate>Mon, 08 Nov 2010 08:31:00 GMT</pubDate><guid>http://www.cppblog.com/terrycpp/archive/2010/11/08/133003.html</guid><wfw:comment>http://www.cppblog.com/terrycpp/comments/133003.html</wfw:comment><comments>http://www.cppblog.com/terrycpp/archive/2010/11/08/133003.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/terrycpp/comments/commentRss/133003.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/terrycpp/services/trackbacks/133003.html</trackback:ping><description><![CDATA[<p>原文出自javaeye robin，<a href="http://robbin.javaeye.com/blog/261176">http://robbin.javaeye.com/blog/261176</a><br><br>对大多数不从事Linux平台C语言开发的人来说，GNU gcc的一套工具和Linux平台的共享库的使用还是十分陌生的，其实我也不太熟悉，姑且写点基础知识，权当做备忘吧。 </p>
<p><span style="FONT-SIZE: large"><font size=4>一、GNU gcc的编译工具用法</font></span>&nbsp;<br><br>我们先来写一个简单的C程序：hello.c </p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img id=Codehighlighter1_44_80_Open_Image onclick="this.style.display='none'; Codehighlighter1_44_80_Open_Text.style.display='none'; Codehighlighter1_44_80_Closed_Image.style.display='inline'; Codehighlighter1_44_80_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_44_80_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_44_80_Closed_Text.style.display='none'; Codehighlighter1_44_80_Open_Image.style.display='inline'; Codehighlighter1_44_80_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;print_hello()&nbsp;</span><span id=Codehighlighter1_44_80_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_44_80_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Hello&nbsp;World\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img id=Codehighlighter1_120_160_Open_Image onclick="this.style.display='none'; Codehighlighter1_120_160_Open_Text.style.display='none'; Codehighlighter1_120_160_Closed_Image.style.display='inline'; Codehighlighter1_120_160_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_120_160_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_120_160_Closed_Text.style.display='none'; Codehighlighter1_120_160_Open_Image.style.display='inline'; Codehighlighter1_120_160_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;argv[])&nbsp;</span><span id=Codehighlighter1_120_160_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_120_160_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;print_hello();&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>定义了一个print_hello函数，调用main函数打印Hello World。 <br><br>如何编译它呢？<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">gcc&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;hello&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">O2&nbsp;hello.c&nbsp;&nbsp;<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>-o参数指定生成的可执行程序的文件名， -O2是优化级别。该命令会编译生成hello可执行程序，看看这个文件：ls -l hello <br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">-</span><span style="COLOR: #000000">rwxr</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">xr</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">x&nbsp;&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;robbin&nbsp;users&nbsp;</span><span style="COLOR: #000000">11939</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2008</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">02</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">48</span><span style="COLOR: #000000">&nbsp;hello&nbsp;&nbsp;</span></div>
有11KB大小。 <br><br>看看他链接了哪些系统动态链接库，用ldd命令： <br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">ldd&nbsp;hello&nbsp;&nbsp;</span></div>
<br>输出信息为： <br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">libc.so.</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib64</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">tls</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">libc.so.</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">0x0000002a9566d000</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib64</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">ld</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">linux</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">x86</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">64</span><span style="COLOR: #000000">.so.</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">0x0000002a95556000</span><span style="COLOR: #000000">)&nbsp;&nbsp;<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>libc是C语言标准函数库，ld是动态链接器。<br>&nbsp;<br>接着我们看看hello这个程序里面有哪些符号，用nm命令：<br>&nbsp;<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">nm&nbsp;hello&nbsp;&nbsp;</span></div>
<br>输出： <br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">00000000005008f8&nbsp;A&nbsp;__bss_start&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>000000000040043c&nbsp;t&nbsp;call_gmon_start&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><img src="http://www.cppblog.com/Images/dot.gif"><img src="http://www.cppblog.com/Images/dot.gif">&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>00000000004004f0&nbsp;T&nbsp;main&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">0000000000500658</span><span style="COLOR: #000000">&nbsp;d&nbsp;p.</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>00000000004004e0&nbsp;T&nbsp;print_hello&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U&nbsp;puts@@GLIBC_2.</span><span style="COLOR: #000000">2.5</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">0000000000400410</span><span style="COLOR: #000000">&nbsp;T&nbsp;_start&nbsp;&nbsp;</span></div>
<br>中间省略了一些，不过我们还是可以在符号表里面找到函数定义。 <br>hello有11KB，体积偏大，去处符号表可以给它瘦身，我们用strip命令：<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">strip&nbsp;hello</span></div>
<br>然后再ls -l hello，输出为：<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">-</span><span style="COLOR: #000000">rwxr</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">xr</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">x&nbsp;&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;webuser&nbsp;users&nbsp;</span><span style="COLOR: #000000">4464</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2008</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">02</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">56</span><span style="COLOR: #000000">&nbsp;hello&nbsp;&nbsp;</span></div>
<br>只有4.4KB了，瘦身效果明显！ 不过这次符号表再也看不到了，nm hello，输出为：nm: hello: no symbols。 <br>最后如果我们想从可执行程序里面提取出来一点什么文本信息的话，还可以用strings命令：<br>&nbsp;<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">strings&nbsp;hello&nbsp;</span></div>
<br>输出信息为：<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib64</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">ld</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">linux</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">x86</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">64</span><span style="COLOR: #000000">.so.</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>SuSE&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>libc.so.</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>puts&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>__libc_start_main&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>__gmon_start__&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>GLIBC_2.</span><span style="COLOR: #000000">2.5</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>t&nbsp;fff&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Hello&nbsp;World&nbsp;&nbsp;</span></div>
<br>友情提醒一下，如果你用Java写一个HelloWorld.java，编译以后你也可以用strings窥探一番。 <br><br><span style="FONT-SIZE: large"><font size=4>二、动态共享库怎么使用</font></span> <br><br>这次我们把hello.c拆开成为两个文件：hello.c和main.c。hello.c的代码是： <br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img id=Codehighlighter1_44_80_Open_Image onclick="this.style.display='none'; Codehighlighter1_44_80_Open_Text.style.display='none'; Codehighlighter1_44_80_Closed_Image.style.display='inline'; Codehighlighter1_44_80_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_44_80_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_44_80_Closed_Text.style.display='none'; Codehighlighter1_44_80_Open_Image.style.display='inline'; Codehighlighter1_44_80_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;print_hello()&nbsp;</span><span id=Codehighlighter1_44_80_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_44_80_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Hello&nbsp;World\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;<br></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>而main.c的代码是：<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img id=Codehighlighter1_32_72_Open_Image onclick="this.style.display='none'; Codehighlighter1_32_72_Open_Text.style.display='none'; Codehighlighter1_32_72_Closed_Image.style.display='inline'; Codehighlighter1_32_72_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_32_72_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_32_72_Closed_Text.style.display='none'; Codehighlighter1_32_72_Open_Image.style.display='inline'; Codehighlighter1_32_72_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;argv[])&nbsp;</span><span id=Codehighlighter1_32_72_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_32_72_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;print_hello();&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;</span></div>
<br>hello.c是我们的动态共享库，在hello.c里面我们声明和实现了各种公用的函数，最后main.c可以去调用这些公用函数。首先我们要把hello.c编译成为动态共享库：<br><br>-fPIC参数声明链接库的代码段是可以共享的，-shared参数声明编译为共享库。请注意这次我们编译的共享库的名字叫做libhello.so，这也是Linux共享库的一个命名的惯例了：后缀使用so，而名称使用libxxxx格式。 <br><br>然后编译main.c的时候，我们需要更多的参数让gcc知道如何寻找共享库： <br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">gcc&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">o&nbsp;main&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">O2&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">L&nbsp;.&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">l&nbsp;hello&nbsp;main.c</span></div>
<br>-L参数指定到哪个附加路径下面去寻找共享库，现在我们指定在当前目录下面寻找； <br>-l参数指定链接到哪个共享库上面，我们传的参数hello，那么gcc就会自动链接到libhello.so这个共享库上面(注意我们上面说的libXXXX.so命名规则)； <br>-I参数指定到哪个附加路径下面去寻找h文件，这个我们没有使用。 <br><br>最后我们成功编译好了main，执行一下，报错： <br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">.</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">main:&nbsp;error&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;loading&nbsp;shared&nbsp;libraries:&nbsp;libhello.so:&nbsp;cannot&nbsp;open&nbsp;shared&nbsp;</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000">&nbsp;file:&nbsp;No&nbsp;such&nbsp;file&nbsp;or&nbsp;directory</span></div>
<br>找不到libhello.so这个共享库，怎么回事？这是因为libhello.so并不在操作系统默认的共享库的路径下面，我们可以临时指定一下链接路径：<br>&nbsp;<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">export&nbsp;LD_LIBRARY_PATH</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">.:$LD_LIBRARY_PATH</span></div>
<br>这样就成功了。我们用ldd main看一下： <br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">libhello.so&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;.</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">libhello.so&nbsp;(</span><span style="COLOR: #000000">0x0000002a9566d000</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>libc.so.</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib64</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">tls</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">libc.so.</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">0x0000002a9576e000</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib64</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">ld</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">linux</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">x86</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">64</span><span style="COLOR: #000000">.so.</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">0x0000002a95556000</span><span style="COLOR: #000000">)&nbsp;</span></div>
<br>这次main程序链接到了libhello.so这个共享库上面。 <br><br><span style="FONT-SIZE: large"><font size=4>三、关于Linux的动态共享库的设置</font></span> <br><br>可执行程序找不到要链接的动态共享库，这是Linux上面编译和运行程序很容易碰到的问题，通过上面的小例子，我们已经大致了解共享库的一点基本原理，接下来我们要探讨一下怎么设置程序寻找动态共享库的行为。 <br><br>Linux操作系统上面的动态共享库大致分为三类： <br><br><span style="FONT-SIZE: large"><font size=4>1、操作系统级别的共享库和基础的系统工具库</font></span> <br><br>比方说libc.so, libz.so, libpthread.so等等，这些系统库会被放在/lib和/usr/lib目录下面，如果是64位操作系统，还会有/lib64和/usr/lib64目录。如果操作系统带有图形界面，那么还会有/usr/X11R6/lib目录，如果是64位操作系统，还有/usr/X11R6/lib64目录。此外还可能有其他特定Linux版本的系统库目录。 <br><br>这些系统库文件的完整和版本的正确，确保了Linux上面各种程序能够正常的运行。 <br><br><span style="FONT-SIZE: large"><font size=4>2、应用程序级别的系统共享库</font></span> <br><br>并非操作系统自带，但是可能被很多应用程序所共享的库，一般会被放在/usr/local/lib和/usr/local/lib64这两个目录下面。很多你自行编译安装的程序都会在编译的时候自动把/usr/local/lib加入gcc的-L参数，而在运行的时候自动到/usr/local/lib下面去寻找共享库。 <br><br>以上两类的动态共享库，应用程序会自动寻找到他们，并不需要你额外的设置和担心。这是为什么呢？ 因为以上这些目录默认就被加入到动态链接程序的搜索路径里面了。Linux的系统共享库搜索路径定义在/etc/ld.so.conf这个配置文件里面。这个文件的内容格式大致如下：<br>&nbsp;<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">X11R6</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib64&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">X11R6</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">local</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib64&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib64&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">local</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib64&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">local</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">ImageMagick</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib&nbsp;&nbsp;</span></div>
<br>假设我们自己编译安装的ImageMagick图形库在/usr/local/ImageMagick目录下面，并且希望其他应用程序都可以使用ImageMagick的动态共享库，那么我们只需要把/usr/local/ImageMagick/lib目录加入/etc/ld.so.conf文件里面，然后执行：ldconfig 命令即可。 <br><br>ldcofig将搜索以上所有的目录，为共享库建立一个缓存文件/etc/ld.so.cache。为了确认ldconfig已经搜索到ImageMagick的库，我们可以用上面介绍的strings命令从ld.so.cache里面抽取文本信息来检查一下：<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">strings&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">etc</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">ld.so.cache&nbsp;</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">&nbsp;grep&nbsp;ImageMagick&nbsp;&nbsp;&nbsp;</span></div>
<br>输出结果为： <br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">local</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">ImageMagick</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">libWand.so.</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">local</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">ImageMagick</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">libWand.so&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">local</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">ImageMagick</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">libMagick.so.</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">local</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">ImageMagick</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">libMagick.so&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">local</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">ImageMagick</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">libMagick</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">.so.</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">usr</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">local</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">ImageMagick</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lib</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">libMagick</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">.so&nbsp;&nbsp;</span></div>
<br>已经成功了！ <br><br><span style="FONT-SIZE: large"><font size=4>3、应用程序独享的动态共享库</font></span> <br><br>有很多共享库只被特定的应用程序使用，那么就没有必要加入系统库路径，以免应用程序的共享库之间发生版本冲突。因此Linux还可以通过设置环境变量LD_LIBRARY_PATH来临时指定应用程序的共享库搜索路径，就像我们上面举的那个例子一样，我们可以在应用程序的启动脚本里面预先设置LD_LIBRARY_PATH，指定本应用程序附加的共享库搜索路径，从而让应用程序找到它。 <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<img src ="http://www.cppblog.com/terrycpp/aggbug/133003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/terrycpp/" target="_blank">terrycpp</a> 2010-11-08 16:31 <a href="http://www.cppblog.com/terrycpp/archive/2010/11/08/133003.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>list_head</title><link>http://www.cppblog.com/terrycpp/archive/2010/11/08/132978.html</link><dc:creator>terrycpp</dc:creator><author>terrycpp</author><pubDate>Mon, 08 Nov 2010 03:23:00 GMT</pubDate><guid>http://www.cppblog.com/terrycpp/archive/2010/11/08/132978.html</guid><wfw:comment>http://www.cppblog.com/terrycpp/comments/132978.html</wfw:comment><comments>http://www.cppblog.com/terrycpp/archive/2010/11/08/132978.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/terrycpp/comments/commentRss/132978.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/terrycpp/services/trackbacks/132978.html</trackback:ping><description><![CDATA[项目里面用到了list_head结构体，出现了问题，该问题与这篇主题无关，而且尚未解决，可能是&lt;linux/list.h&gt;库没被包含吧，要晚上回去再研究。<br>找问题原因的时候看了看list_head的定义，是下面这样的<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img id=Codehighlighter1_17_54_Open_Image onclick="this.style.display='none'; Codehighlighter1_17_54_Open_Text.style.display='none'; Codehighlighter1_17_54_Closed_Image.style.display='inline'; Codehighlighter1_17_54_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_17_54_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_17_54_Closed_Text.style.display='none'; Codehighlighter1_17_54_Open_Image.style.display='inline'; Codehighlighter1_17_54_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;list_head&nbsp;</span><span id=Codehighlighter1_17_54_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id=Codehighlighter1_17_54_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;list_head&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">next,&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">prev;<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;&nbsp;</span></div>
于是觉得奇怪，这个结构怎么来保存数据呢？<br>上网查了之后长见识了，原来还可以这样。<br>list_head在别的结构中是充当&#8220;栏位&#8221;的角色，即拿到list_head之后，可以根据偏移位数来得到原结构变量的起始地址。<br>可以使用list_entry来取得入口地址，list_entry定义如下：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;list_entry(ptr,&nbsp;type,&nbsp;member)&nbsp;\</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>((type&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)((</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)(ptr)</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">(unsigned&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">)(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">((type&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">member)))&nbsp;</span></div>
使用例子：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">list_entry(&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">sb1.s_list,&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;super_block,&nbsp;s_list)</span></div>
上面例子可以用来根据s_list地址来取得sb1这个super_block结构体变量的地址。
<img src ="http://www.cppblog.com/terrycpp/aggbug/132978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/terrycpp/" target="_blank">terrycpp</a> 2010-11-08 11:23 <a href="http://www.cppblog.com/terrycpp/archive/2010/11/08/132978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>11月</title><link>http://www.cppblog.com/terrycpp/archive/2010/11/05/132569.html</link><dc:creator>terrycpp</dc:creator><author>terrycpp</author><pubDate>Fri, 05 Nov 2010 07:47:00 GMT</pubDate><guid>http://www.cppblog.com/terrycpp/archive/2010/11/05/132569.html</guid><wfw:comment>http://www.cppblog.com/terrycpp/comments/132569.html</wfw:comment><comments>http://www.cppblog.com/terrycpp/archive/2010/11/05/132569.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/terrycpp/comments/commentRss/132569.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/terrycpp/services/trackbacks/132569.html</trackback:ping><description><![CDATA[<p>11.5<br>每次都来写几句，这些唠叨的就放一起吧，以月为单位。这个方法不错~呵呵<br>今天把测试用例写完了，虽然老大还没过目。先自己解放一下吧。<br>这两天注意力完全给了QQ360大战。我是顶QQ的，因为觉得网友一边倒骂QQ太浮躁，而且很多理由站不住脚。<br>腾讯还是我很欣赏的一家公司，但愿不要经此一役而走下坡路吧。当然自身也有些地方要反省的。<br>还是多花心思学东西吧，今晚回去实验室做做防火墙。<br>公司电脑想装个虚拟机玩玩linux，嗯，先安装。<br><br>11.27<br>今天入手了几本大部头，小激动~~<br>可惜算了算并没有足够的时间看。要好好安排下了。<br>诶，突然有辞去实习的想法，但又没钱用。囧。。。<br>前几天突然接到个电话面试，是好久以前投的简历。内牛满面啊，想死的心都有！！发现基础都丢了。<br>自勉。</p>
<img src ="http://www.cppblog.com/terrycpp/aggbug/132569.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/terrycpp/" target="_blank">terrycpp</a> 2010-11-05 15:47 <a href="http://www.cppblog.com/terrycpp/archive/2010/11/05/132569.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>blog搬家啦</title><link>http://www.cppblog.com/terrycpp/archive/2010/11/04/132495.html</link><dc:creator>terrycpp</dc:creator><author>terrycpp</author><pubDate>Thu, 04 Nov 2010 14:24:00 GMT</pubDate><guid>http://www.cppblog.com/terrycpp/archive/2010/11/04/132495.html</guid><wfw:comment>http://www.cppblog.com/terrycpp/comments/132495.html</wfw:comment><comments>http://www.cppblog.com/terrycpp/archive/2010/11/04/132495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/terrycpp/comments/commentRss/132495.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/terrycpp/services/trackbacks/132495.html</trackback:ping><description><![CDATA[原来用的那个名字不够深刻，老记错，特换了这个。terrycpp，以后多上上！ 
<img src ="http://www.cppblog.com/terrycpp/aggbug/132495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/terrycpp/" target="_blank">terrycpp</a> 2010-11-04 22:24 <a href="http://www.cppblog.com/terrycpp/archive/2010/11/04/132495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]开博咯</title><link>http://www.cppblog.com/terrycpp/archive/2010/11/04/132494.html</link><dc:creator>terrycpp</dc:creator><author>terrycpp</author><pubDate>Thu, 04 Nov 2010 14:21:00 GMT</pubDate><guid>http://www.cppblog.com/terrycpp/archive/2010/11/04/132494.html</guid><wfw:comment>http://www.cppblog.com/terrycpp/comments/132494.html</wfw:comment><comments>http://www.cppblog.com/terrycpp/archive/2010/11/04/132494.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/terrycpp/comments/commentRss/132494.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/terrycpp/services/trackbacks/132494.html</trackback:ping><description><![CDATA[<p><font style="BACKGROUND-COLOR: #f4f4f4">也学别人开开博，记录下成长点滴。<br>本科的时候写过几个MIS级别的程序，觉得一切都好简单。读研一年了，虽然做过一点东西，发现好多东西要学。最近翻了翻《C++程序设计语言》，发现基础真是差，更不用提STL，BOOST了。菜鸟&#8230;&#8230;泪奔&#8230;&#8230;<br>回顾下过去一年，存在以下问题：<br>1、基础不好，对技术的态度是用到的时候google/百度之，能解决问题就可以了，做了项目却没什么太大提高。<br>2、没有方向。混用着不熟悉的C++和不熟悉的java，东一个西一个地做项目，瞎忙。<br></font></p>
既然回顾了，很自然就要有打算：<br>1、好生研究C++，先再把语言内容过一遍，然后是STL。<br>2、钻钻网络安全，毕竟是硕士方向。<br>3、有时间的话，想持续做个自己感兴趣的东西。好多大牛是这么做的，崇拜。<br>4、看看算法。<br>很多大牛为了兴趣而编程，赞一个先。好吧，我承认我俗，我先想到的是找个好工作然后衣食住行之类的。为了编程，没兴趣也要挤出兴趣来哈！<br>好好积累吧，菜鸟。 <img height=1 src="http://www.cppblog.com/vc-zs/aggbug/120326.html" width=1><br><br>
<div align=right><a style="TEXT-DECORATION: none" href="http://www.cppblog.com/vc-zs/" target=_blank>vc-zs</a> 2010-07-14 14:21 <a style="TEXT-DECORATION: none" href="http://www.cppblog.com/vc-zs/archive/2010/07/14/120326.html#Feedback" target=_blank>发表评论</a></div>
<br>文章来源:<a href="http://www.cppblog.com/vc-zs/archive/2010/07/14/120326.html">http://www.cppblog.com/vc-zs/archive/2010/07/14/120326.html</a> 
<img src ="http://www.cppblog.com/terrycpp/aggbug/132494.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/terrycpp/" target="_blank">terrycpp</a> 2010-11-04 22:21 <a href="http://www.cppblog.com/terrycpp/archive/2010/11/04/132494.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]每天提高一点点7.15</title><link>http://www.cppblog.com/terrycpp/archive/2010/11/04/132493.html</link><dc:creator>terrycpp</dc:creator><author>terrycpp</author><pubDate>Thu, 04 Nov 2010 14:21:00 GMT</pubDate><guid>http://www.cppblog.com/terrycpp/archive/2010/11/04/132493.html</guid><wfw:comment>http://www.cppblog.com/terrycpp/comments/132493.html</wfw:comment><comments>http://www.cppblog.com/terrycpp/archive/2010/11/04/132493.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/terrycpp/comments/commentRss/132493.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/terrycpp/services/trackbacks/132493.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天将大话设计模式第一章在C++里面实现。最终还是参考了某位仁兄的代码才豁然开朗。补了一节课。1、了解了C++抛出异常的机制，以后编程要多注意。2、封装的思想，封装啊封装。3、编程规范，要学会用宏。4、Operation 有子类OperationAdd。以下用法是不行的： Operation&nbsp;oper;oper&nbsp;=&nbsp;OperationAdd(); 必须用new，此...&nbsp;&nbsp;<a href="http://www.cppblog.com/vc-zs/archive/2010/07/15/120466.html">阅读全文</a><img height=1 src="http://www.cppblog.com/vc-zs/aggbug/120466.html" width=1><br><br>
<div align=right><a style="TEXT-DECORATION: none" href="http://www.cppblog.com/vc-zs/" target=_blank>vc-zs</a> 2010-07-15 20:02 <a style="TEXT-DECORATION: none" href="http://www.cppblog.com/vc-zs/archive/2010/07/15/120466.html#Feedback" target=_blank>发表评论</a></div>
<br>文章来源:<a href="http://www.cppblog.com/vc-zs/archive/2010/07/15/120466.html">http://www.cppblog.com/vc-zs/archive/2010/07/15/120466.html</a> 
<img src ="http://www.cppblog.com/terrycpp/aggbug/132493.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/terrycpp/" target="_blank">terrycpp</a> 2010-11-04 22:21 <a href="http://www.cppblog.com/terrycpp/archive/2010/11/04/132493.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]最近</title><link>http://www.cppblog.com/terrycpp/archive/2010/11/04/132492.html</link><dc:creator>terrycpp</dc:creator><author>terrycpp</author><pubDate>Thu, 04 Nov 2010 14:21:00 GMT</pubDate><guid>http://www.cppblog.com/terrycpp/archive/2010/11/04/132492.html</guid><wfw:comment>http://www.cppblog.com/terrycpp/comments/132492.html</wfw:comment><comments>http://www.cppblog.com/terrycpp/archive/2010/11/04/132492.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/terrycpp/comments/commentRss/132492.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/terrycpp/services/trackbacks/132492.html</trackback:ping><description><![CDATA[哈哈，很长时间没来了，突然想起还有这么一块地，不要荒废了才是。<br>8月底的时候终于熬到老板出国了，无拘无束，于是去了一家做银行相关业务的公司实习，工资好低，不过是做unix后台开发的，比较喜欢。上周结束了这段实习，总的来说还是有学到一些东西的，起码可以号称踏足过神秘的unix后台，玩了玩oracle。不过公司环境太松散，毕竟跟银行挂钩的，没太大干劲。<br>今天上午去面了爱立信，做java的，笔试后真是内牛满面阿，java也博大精深，我面壁去。看吧，要我的话我就把java当亲生的一样对待。<br>回来学校还得忙实验室的事，拖泥带水，好烦。<br><br><img height=1 src="http://www.cppblog.com/vc-zs/aggbug/130325.html" width=1><br><br>
<div align=right><a style="TEXT-DECORATION: none" href="http://www.cppblog.com/vc-zs/" target=_blank>vc-zs</a> 2010-10-18 20:35 <a style="TEXT-DECORATION: none" href="http://www.cppblog.com/vc-zs/archive/2010/10/18/130325.html#Feedback" target=_blank>发表评论</a></div>
<br>文章来源:<a href="http://www.cppblog.com/vc-zs/archive/2010/10/18/130325.html">http://www.cppblog.com/vc-zs/archive/2010/10/18/130325.html</a> 
<img src ="http://www.cppblog.com/terrycpp/aggbug/132492.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/terrycpp/" target="_blank">terrycpp</a> 2010-11-04 22:21 <a href="http://www.cppblog.com/terrycpp/archive/2010/11/04/132492.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>