﻿<?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++博客-R.R.-随笔分类-Unix/Linux</title><link>http://www.cppblog.com/wiisola/category/13058.html</link><description>愿我来世 身如琉璃</description><language>zh-cn</language><lastBuildDate>Wed, 19 May 2010 13:12:39 GMT</lastBuildDate><pubDate>Wed, 19 May 2010 13:12:39 GMT</pubDate><ttl>60</ttl><item><title>GCC依赖库顺序问题</title><link>http://www.cppblog.com/wiisola/archive/2010/05/18/115637.html</link><dc:creator>R.R.</dc:creator><author>R.R.</author><pubDate>Mon, 17 May 2010 18:01:00 GMT</pubDate><guid>http://www.cppblog.com/wiisola/archive/2010/05/18/115637.html</guid><wfw:comment>http://www.cppblog.com/wiisola/comments/115637.html</wfw:comment><comments>http://www.cppblog.com/wiisola/archive/2010/05/18/115637.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wiisola/comments/commentRss/115637.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wiisola/services/trackbacks/115637.html</trackback:ping><description><![CDATA[今天在把linux下做的ipmsg移植到windows过程中，因为包含了一个开源库SimpleSocket，而这个库又引用了winsock2，没太注意就写下了下面的makefile：<br><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-FAMILY: Monaco; FONT-SIZE: 12px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">g++ -o tt tt.o <span style="COLOR: #000000">-</span><span style="COLOR: #000000">lws2_32&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">lclsocketd</span></div>
<br>结果报出了N多丑陋的undefined reference..之后尝试将-lws2_32和-lclsocketd交换位置后，编译通过。<br><br>上网查了下，发现gcc编译时依赖库的顺序是很重要的。比如说，liba.a依赖于libb.a，则必须写成-la -lb，似乎感觉这种顺序很奇怪。另外参考网上<a href="http://www.cppblog.com/findingworld/archive/2008/11/09/66408.html">http://www.cppblog.com/findingworld/archive/2008/11/09/66408.html</a>的内容，在库比较多依赖关系比较复杂或者相互依赖或者自己不清楚的情况下，可以采取下面2种办法：<br><br>1、-la -lb -la，丑陋，但是有效。<br>2、gcc有这样的选项，-Xlinker，写成如下格式可以强制gcc重复查找依赖库：<br><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-FAMILY: Monaco; FONT-SIZE: 12px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">g++ -o tt tt.o -Xlinker "-(" <span style="COLOR: #000000">-</span><span style="COLOR: #000000">lws2_32&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">lclsocketd "-)"</span></div>
<br>这样在括号中的库的依赖关系就不需要你操心啦，虽然会延长链接时间。不过本人在实际使用过程中，g++认不出"-)"，不加也可以链接成功。 
<img src ="http://www.cppblog.com/wiisola/aggbug/115637.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wiisola/" target="_blank">R.R.</a> 2010-05-18 02:01 <a href="http://www.cppblog.com/wiisola/archive/2010/05/18/115637.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]深入分析Windows和Linux动态库应用异同</title><link>http://www.cppblog.com/wiisola/archive/2010/03/31/111202.html</link><dc:creator>R.R.</dc:creator><author>R.R.</author><pubDate>Wed, 31 Mar 2010 12:28:00 GMT</pubDate><guid>http://www.cppblog.com/wiisola/archive/2010/03/31/111202.html</guid><wfw:comment>http://www.cppblog.com/wiisola/comments/111202.html</wfw:comment><comments>http://www.cppblog.com/wiisola/archive/2010/03/31/111202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wiisola/comments/commentRss/111202.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wiisola/services/trackbacks/111202.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 摘要：动态链接库技术实现和设计程序常用的技术，在Windows和Linux系统中都有动态库的概念，采用动态库可以有效的减少程序大小，节省空间，提高效率，增加程序的可扩展性，便于模块化管理。 <br><br>但不同操作系统的动态库由于格式 不同，在需要不同操作系统调用时需要进行动态库程序移植。本文分析和比较了两种操作系统动态库技术，并给出了将Visual C++编制的动态库移植到Linux上的方法和经验。 <br><br>1、引言 <br><br>动态库（Dynamic Link Library abbr，DLL）技术是程序设计中经常采用的技术。其目的减少程序的大小，节省空间，提高效率，具有很高的灵活性。 <br><br>采用动态库技术对于升级软件版本更加容易。与静态库（Static Link Library）不同，动态库里面的函数不是执行程序本身的一部分，而是根据执行需要按需载入，其执行代码可以同时在多个程序中共享。 <br><br>在Windows和Linux操作系统中，都可采用这种方式进行软件设计，但他们的调用方式以及程序编制方式不尽相同。本文首先分析了在这两种&nbsp;&nbsp;<a href='http://www.cppblog.com/wiisola/archive/2010/03/31/111202.html'>阅读全文</a><img src ="http://www.cppblog.com/wiisola/aggbug/111202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wiisola/" target="_blank">R.R.</a> 2010-03-31 20:28 <a href="http://www.cppblog.com/wiisola/archive/2010/03/31/111202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SecureCRT登录ubuntu9.10的中文乱码问题</title><link>http://www.cppblog.com/wiisola/archive/2010/03/24/110395.html</link><dc:creator>R.R.</dc:creator><author>R.R.</author><pubDate>Tue, 23 Mar 2010 17:31:00 GMT</pubDate><guid>http://www.cppblog.com/wiisola/archive/2010/03/24/110395.html</guid><wfw:comment>http://www.cppblog.com/wiisola/comments/110395.html</wfw:comment><comments>http://www.cppblog.com/wiisola/archive/2010/03/24/110395.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wiisola/comments/commentRss/110395.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wiisola/services/trackbacks/110395.html</trackback:ping><description><![CDATA[<p>加了一些技术群，经常会看到一些奇怪的现象。一个新手在群里提了个问题，结果半天没人回答，倒是会跳出四五个卫道士模样的人，指手画脚，指责新手编码风格不好，习惯不好，种种。看上去句句在理，实际上全部放屁。本来编码风格之类的东西就是温饱以后考虑的问题，现在人家连饭还没吃饱，你要他考虑这种奢侈品，那你要么是吃饱了撑的，要么就是纯粹去馋人家。不管回答者水平如何，避而不谈问题本身，去扯那些暂时对新人没有用的东西，那就是方向性的误导。最终的结果，新人完全搞不明白你在说什么，本来简单的问题，弄了半天没搞懂。这是一种严重的不负责任，作为技术上的前辈，你可以不回答，但你绝对不要去误导。<br><br>回正题（-。-）。原来从公司拷来的redhat已经被我搞的很乱了，于是萌发了将平台移植到新的虚拟机里，因为对ubuntu相对比较熟悉，所以今天重装了ubuntu的虚拟机。重装途中，困难重重，结果到半夜才勉强搞定。记录一下遇到的问题，以及解决的办法，还有一些东西已备以后查看。<br><br>1、取消ubuntu默认的点阵字体</p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-FAMILY: Courier New; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">cd&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">etc</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">fonts</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">conf.d<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">sudo&nbsp;ln&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">sf&nbsp;..</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">conf.avail</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">66</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">wqy</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">zenhei</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">sharp</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">no13px.conf&nbsp;</span><span style="COLOR: #000000">66</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">wqy</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">zenhei</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">sharp.conf</span></div>
<p><br>2、ubuntu初始安装是没有ftp/telnet的<br></p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-FAMILY: Courier New; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">sudo&nbsp;apt</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">get</span><span style="COLOR: #000000">&nbsp;install&nbsp;vsftpd&nbsp;xinetd&nbsp;telnetd</span></div>
<p>其中需要设置：/etc/vsftpd.conf文件中将以下一行注释去掉:local_enable=YES，目的是可以使用linux用户登录ftp（否则只能匿名登录）。<br>另外还有个问题，在FTP的put时，似乎由于权限问题会put失败，尝试root登录也失败，暂时没有找到原因，<span style="COLOR: red">以后研究了补上</span>。<br><br>3、su - root<br>ubuntu第一次安装好后默认无法登录root，这时候可以通过下面命令修改root口令，就可以su - root了。</p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-FAMILY: Courier New; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">sudo&nbsp;passwd&nbsp;root</span></div>
<p><br>4、新增字体<br>将字体文件拷入/home/.fonts目录下，执行下列命令刷新字体缓存。然后就可以使用新加的字体了。</p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-FAMILY: Courier New; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">fc</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">cache&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">fv</span></div>
<p>sudo不sudo无所谓。另外建议将字体的权限改成755，以便其他用户read。<br><br><br>5、最后一个，也是本文的标题，同样也是困扰我一晚上的问题。在SecureCRT登录的时候发现中文有乱码的问题，尝试了网上的一些办法，把编码改UTF-8 GBK都是有问题，最后发现了原来字体的字符集也是有关系的，现在把我改的东西整理如下。<br></p>
<p>（1）/var/lib/locales/supported.d/local文件中添加一行：zh_CN.UTF-8 UTF-8，执行sudo locale-gen下载文件<br>（2）在/etc/environment中增加两行分别为：LANG="zh_CN.UTF-8"和LC_ALL="zh_CN.UTF-8"<br>（3）~/.profile中增加两行分别为：export LANG="zh_CN.UTF-8"和export LC_ALL="zh_CN.UTF-8"，执行.profile<br>（4）SecureCRT中选择终端类型为Linux，选择编码为UTF-8，最重要的是选择一个支持GB2312字符集的字体。因为我常用的Monaco字体不支持，于是我不得不忍痛放弃，在网上找到一个&#8220;<a href="http://85y.org/blog/20090705898.html">YaHei Mono</a>&#8221;是可以正常显示的，虽然看上去不如Monaco，不过用着慢慢也习惯了吧（记得大学里做毕业设计的时候用netbeans里一个Yahei console字体和这个很相似），具体详见<a href="http://ict.tigerrr.cn/securecrt-%E4%B8%AD%E6%96%87%E5%AD%97%E4%BD%93%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/">这里</a>。<br><br>到此SecureCRT终于可以正常显示汉字了，因为很困了所以只是罗列了一下修改内容，没有写太多的理由。在此我不禁要喷一喷微软，你说你好好的UTF-8不用，都WIN7了还用这么个GB2312，你不是害人吗。<br><br>睡了，有修改内容以后补充。<br><br><br><br><br>&nbsp;</p>
<img src ="http://www.cppblog.com/wiisola/aggbug/110395.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wiisola/" target="_blank">R.R.</a> 2010-03-24 01:31 <a href="http://www.cppblog.com/wiisola/archive/2010/03/24/110395.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>