SunBo

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  322 随笔 :: 0 文章 :: 13 评论 :: 111万 阅读

08 2010 档案

摘要:1.分层设计,隔离平台相关的代码。就像可测试性一样,可移植性也要从设计抓起。一般来说,最上层和最下层都不具有良好的可移植性。最上层是GUI,大多数GUI都不是跨平台的,如Win32 SDK和MFC。最下层是操作系统API,大多部分操作系统API都是专用的。 如果这两层的代码散布在整个软件中,那么这个软件的可植性将非常的差,这是不言自明的。那么如何避免这种情况呢?当然是分层设计了: 最底层采用Adapter模式,把不同操作系统的API封装成一套统一的接口。至于封装成类还是封装成函数,要看你采用的C还是C++写的程序了。这看起来很简单,其实不尽然(看完整篇文章后你会明白的),它将耗去你大量的时间. 阅读全文
posted @ 2010-08-30 03:55 SunBo 阅读(217) 评论(0) 推荐(0) 编辑

摘要:作为一个多用户、多任务的操作系统,linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但 是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于家庭单机使用的linux,或者误删文件后及时补救,还是可以恢复的。1、Ext2文件系统结构的简单介绍在linux所用的Ext2文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。每个文件还有一个节点, 节点中包含有文件所有者,读写权限,文件类型等信息。对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。如果文件大于12个块,那么节点在 12个块号之 阅读全文
posted @ 2010-08-27 10:10 SunBo 阅读(719) 评论(0) 推荐(0) 编辑

摘要:一、使用deb包1. 查看deb包含有哪些文件(不安装)$ dpkg -c xxx.deb // 安装前根据deb文件查看$ dpkg -L debname // 安装后根据包名查看2. 安装deb包$ dpkg -i xxx.deb注意,如果提示错误,可以加参数—force-all强制安装,但不推荐这样做3. 查看某个文件属于哪个deb包$ dpkg -S filepath4. 移除deb包$ dpkg -r debname二、制作deb包1. 原理1) deb包通常包含两部分:控制信息(DEBIAN目录)、安装内容(模拟root目录)2) 通过解开已有的deb包看其中内容i. 释放安装内容 阅读全文
posted @ 2010-08-27 09:51 SunBo 阅读(6827) 评论(0) 推荐(0) 编辑

摘要:关注的角度不同,因此如何利用objdump就要看你的抉择了!因为计算机大都是采用哈佛结构,数据和指令分开存储的的程序组织形式,因此当我门编译,汇编,连接,(符号解吸,段的重定位)。而为了能让程序更好的被执行,最终生成的目标文件包含了足够多了信息生怕自己被歧视而不被执行。所以面对2进制的目标文件来说,我门是很难发现或者看到什么有用的信息,因此objdump这个工具的实际意义是多么的令人喜爱,只有当你要探索一个目标文件的组织形式的时候就能体会了更多的细节建议看看《深入理解计算机》这本书的第二部分第七章节,虽然作者的逻辑思维与本人有异,有可能你会喜欢哦。---------------objdump是 阅读全文
posted @ 2010-08-25 12:06 SunBo 阅读(557) 评论(0) 推荐(1) 编辑

摘要:GNU binutils是一组二进制工具集。包括:addr2line ar gprof nm objcopy objdump ranlib size strings strip. 本文归纳他们的常用法。 ar ar用于建立、修改、提取档案文件(archive)。archive是一个包含多个被包含文件的单一文件(也称之为库文件),其结构保证了可以从中检索并得到原始的被包含文件(称之为archive中的member)。member的原始文件内容、模式(权限)、时间戳、所有着和组等属性都被保存在 archive中。member被提取后,他们的属性被恢复到初始状态。 ar主要用于创建C库文件(关于.. 阅读全文
posted @ 2010-08-25 10:50 SunBo 阅读(297) 评论(0) 推荐(0) 编辑

摘要:1.概念1). 什么是core dumpcore dump即是内存dump(现在通常是写在一个叫core的file 里面),core也许来自远古时候,那时候人们使用线圈制作内存,而线圈就叫做core。2). 什么是map文件MAP 文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,是整个程序工程信息的静态文本,通常由linker生成。注:map文件在各种编译器中都可以使用,不限于gcc.2.使用1). core dump如果用的是bash的话, 在/etc/profile里加上(或者修改)一条: ulimit -c 0则禁止core dump.使用core dump -c 尺寸 阅读全文
posted @ 2010-08-25 08:56 SunBo 阅读(6156) 评论(0) 推荐(0) 编辑

摘要:GNU 二进制实用程序Binutils (GNU binary utilities)包括:objdump、readelf、addr2line、strip、ar、nm、ldd、ngprof、gcov等。一。 objdump - 显示二进制文件信息objdump可以根据目标文件来生成可读性比较好的汇编文件。常用的命令如下:gcc -g3 test.c -o test.o objdump -Slz test.o objdump命令介绍,可以通过man objdump在linux环境下获取到。 [-a] [-b bfdname | --target=bfdname] [-C] [--debuggi.. 阅读全文
posted @ 2010-08-25 04:11 SunBo 阅读(972) 评论(0) 推荐(0) 编辑

摘要:当我们的程序中有经常使用的模块,而且这种模块在其他程序中也会用到,这时按照软件重用的思想,我们应该将它们生成库,使得以后编程可以减少开发代码量。这里介绍两个命令ar和nm,用来对库操作。 1.ar基本用法 2.nm基本用法命令当我们的程序中有经常使用的模块,而且这种模块在其他程序中也会用到,这时按照软件重用的思想,我们应该将它们生成库,使得以后编程可以减少开发代码量。这里介绍两个命令ar和nm,用来对库操作。 1.ar基本用法ar命令可以用来创建、修改库,也可以从库中提出单个模块。库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做此库文件的member)。原始文件的内容、 阅读全文
posted @ 2010-08-25 03:34 SunBo 阅读(434) 评论(0) 推荐(0) 编辑

摘要:转载自LinuxSir社区基础知识版http://bbs.linuxsir.org/showthread.php?t=137498&highlight=System.map 编译:赵炯 www.plinux.org (gohigh@sh163.net)有关System.map文件的信息好象很缺乏。其实它一点也不神秘,并且在整个事情当中它并不象看上去那么得重要。但是由于缺乏必要的文档说明,使其显得比较神秘。它就象耳垂,我们每个人都有,但却不知道是干什么用的。本网页就是用来说明这个问题的。 注意,我并不会是百分之一百正确的。例如,一个系统很可能没有/proc文件系统支持,但是大多数系统肯定 阅读全文
posted @ 2010-08-24 10:22 SunBo 阅读(210) 评论(0) 推荐(0) 编辑

摘要:如果要查看磁盘还剩多少空间,当然是用df的命令了。[root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda2 14G 11G 2.6G 82% / /dev/sda1 99M 14M 81M 14% /boot tmpfs 442M 275M 168M 63% /dev/shm /dev/mapper/vg_test-lv_test 24M 1.3M 21M 6% /mnt/lvm [root@localhost ~]#当然你可能并不关系磁盘还剩余多少空间,你是需要知道当前的文件夹下的磁盘使用情况:[root@localhost ~]#. 阅读全文
posted @ 2010-08-23 08:26 SunBo 阅读(350) 评论(0) 推荐(0) 编辑

摘要:ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。 RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓 冲。另一种称为动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格 阅读全文
posted @ 2010-08-20 05:15 SunBo 阅读(3937) 评论(0) 推荐(0) 编辑

摘要:1.长相不令人讨厌,如果长得不好,就让自己有才气;如果才气也没有,那就总是微笑。 2.气质是关键。如果时尚学不好,宁愿纯朴。 3.与人握手时,可多握一会儿。真诚是宝。 4.不必什么都用“我”做主语。 5.不要向朋友借钱。 6.不要“逼”客人看你的家庭相册。 7.与人打“的”时,请抢先坐在司机旁。 8.坚持在背后说别人好话,别担心这好话传不到当事人耳朵里。 9.有人在你面前说某人坏话时,你只微笑。 10.自己开小车,不要特地停下来和一个骑自行车的同事打招呼。人家会以为你在炫耀。 11.同事生病时,去探望他。很自然地坐在他病床上,回家再认真洗手。 12.不要把过去的事全让人知道。 13.尊重不喜. 阅读全文
posted @ 2010-08-18 08:52 SunBo 阅读(212) 评论(0) 推荐(0) 编辑

摘要:1、致命的异常终止决不允许2、以这个次序编写:用户手册、说明书、帮助、源代码3、除非你使用Risk Factor Analysis (RFA),否则一个程序将花费双倍你认为开发所需的时间---重复工作4、编码工作量应该不超过开发工作的百分之二十5、测试应该至少占工程的百分之三十6、注释应该至少要占源代码的百分之二十7、一条错误信息应该报告什么发生了,关于这个用户能够作什么,程序下一步要做什么,以及哪一行代码造成了该问题?可能也要注意时间,用户名和环境8、好的程序将自动地发送最近的错误信息给永久性媒体9、调用一个例程三次?隐藏它调用一次?不要隐藏10、除了菜单和错误陷阱,例程应精确地只需要一个入 阅读全文
posted @ 2010-08-17 07:53 SunBo 阅读(226) 评论(0) 推荐(0) 编辑

摘要:准备是成功的一半如果你是一个对目前的职位不满意,正着手去在新的一年里找到一个新的职位,这篇文章就是你的一个帮手。工作面试是你去面对未来的老板的征途中最重要的一个过程。你必须像进行一个击剑锦标赛或着一个国际象棋比赛那样的坚韧和敏捷来对待面试。本为是从 William J. Morin和James C. Cabrera 的“在失业的时候如何生存并成功的找到另一个工作”一文中摘选出来的。版权所有:Drake Beam Morin, inc;出版:Harcourt Brace Jovanovich。Morin是纽约的Drake Beam Morin公司的董事长,Cabrera是该公司的主席。该公司是国 阅读全文
posted @ 2010-08-17 07:43 SunBo 阅读(277) 评论(0) 推荐(0) 编辑

摘要:Linux系统调用列表本文列出了大部分常见的Linux系统调用,并附有简要中文说明。 以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的 数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是 单的字母序英文列表,能做到这么完全也是很罕见的。 按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用,对个别本人稍觉不妥的地方作了一些小的修改,并对所有列出的系统调用附上简要注释。 其中有一些函数的作用完全相同,只是参数 阅读全文
posted @ 2010-08-17 07:42 SunBo 阅读(276) 评论(0) 推荐(0) 编辑

摘要:原文链接:http://afreez.blog.51cto.com/59057/7351摘要: 在学习linux内核代码及一些开源软件的源码(如:DirectFB),经常可以看到有关__attribute__的相关使用。本文结合自己的学习经历,较为详细的介绍了__attribute__相关语法及其使用。 --------------------------------------------------------- 声明: 此文为原创,欢迎转载,转载请保留如下信息 作者:聂飞(afreez) 北京-中关村 联系方式:afreez@sina.com (欢迎与作者交流) 初次发布时间:2... 阅读全文
posted @ 2010-08-05 10:49 SunBo 阅读(204) 评论(0) 推荐(0) 编辑

摘要:FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用FTP,都会遇到大量的FTP内部命令。熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之效。 FTP的命令行格式为:ftp -v -d -i -n -g [主机名],其中 -v显示远程服务器的所有响应信息; -n限制ftp的自动登录,即不使用; .n etrc文件; -d使用调试方式; -g取消全局文件名。 ftp使用的内部命令如下(中括号表示可选项): 1.![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip. 2.$ macro-a 阅读全文
posted @ 2010-08-05 10:38 SunBo 阅读(356) 评论(0) 推荐(0) 编辑

摘要:规划:交叉编译器装在:/usr/local/kernel, bootloder放在: /home/volans/arm/用于启动的nfs文件系统放在:/home/armnfs/准备工作:代码:sudo mkdir /home/armnfssudo chmod 777 /home/armnfsmkdir ~/arm上面前两句的目的是在/home下建立armnfs目录,为了开发的方便,把这个目录设成所有用户可rwx。然后把上面提到的资源全部拷贝到~/arm/下。安装配置:代码:安装标准的C开发环境,由于Ubuntu安装默认是不安装的,所以需要先安装一下:sudo apt-get install g 阅读全文
posted @ 2010-08-05 02:04 SunBo 阅读(279) 评论(0) 推荐(0) 编辑

摘要:一、什么是busybox BusyBox 是很多标准 Linux® 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet(不过它的选项比传统 的版本要少);有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。 原理是:很多标准 Linux 工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如 grep 和 find)都需要在目录中搜索文件的代码。当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序 阅读全文
posted @ 2010-08-04 07:01 SunBo 阅读(393) 评论(0) 推荐(0) 编辑

摘要:刚刚接触嵌入式不久,花了半天的时间大体上看了看BusyBox,下面我对BusyBox的原理进行一个肤浅的分析(在网上我不有找到相关的内容). 1、介绍 BusyBox称作是嵌入式开发的瑞士军刀,实用,短小,稳定。 BusyBox利用Linux实用工具中代码大量重复的事实,将重复的代码重新整理,放到一个文件中,减少了多次包含。 BusyBox通过简化非必要的复杂功能,减少占用的空间。 BusyBox的完全可定制性,提供了非常灵活,宜于扩展的结构。 2、BusyBox的基本用法 可以在原代码的docs中看到有两种用法: 直接使用BusyBox ... 阅读全文
posted @ 2010-08-04 06:56 SunBo 阅读(1175) 评论(0) 推荐(0) 编辑

摘要:1 libtool的工作原理 libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中;使用libtool的标准方法,可以在不同平台上创建并调用动态库。可以认为libtool是gcc的一个抽象,其包装了gcc(或者其他的编译器),用户无需知道细节,只要告诉libtool需要编译哪些库即可,libtool将处理库的依赖等细节。libtool只与后缀名为lo、la为的libtool文件打交道。 libtool主要的一个作用是在编译大型软件的过程中解决了库的依赖问题;将繁重的库依赖关系的维护工作承担下来,从而释放了程序员的人力资源。libtool提供统一的接口,隐藏了不同 阅读全文
posted @ 2010-08-04 03:42 SunBo 阅读(1136) 评论(0) 推荐(0) 编辑

摘要:查看当前目录下文件的个数 ls -l | grep "^-" | wc -l查看当前目录下文件的个数,包括子目录里的。ls -lR| grep "^-" | wc -l查看某目录下文件夹(目录)的个数,包括子目录里的。ls -lR| grep "^d" | wc -l简要说明:ls -l长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)grep "^-"这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^dwc -l统计输出信息的行数,因为已经过滤得只剩一 阅读全文
posted @ 2010-08-03 02:23 SunBo 阅读(393) 评论(0) 推荐(0) 编辑

摘要:也许你会遇到像我这样的情况,每次使用Linux终端,当听到发出“嘀嘀”的声音时候,我都有种把我的机箱拆掉把那个内置的蜂鸣装置拽下来的冲动。按Tab时候“嘀嘀”,按空格时候“嘀嘀”,每个在vi中错误的操作都会让机器用刺耳的“嘀嘀”声嘲笑你。好了,到了显示谁是真正的主人的时候了。也许你还没有意识到,这个声音不是来自系统外置的音频输出设备,而是来自机器内部的据我所知是由BIOS控制的发声装置,所以下面我将说明如何将这个小东西关掉。临时的方案sudo rmmod pcspkr对于Debian/Ubuntu的用户来说,只要打开你的终端跑一下上述的命令就可以了。对于CentOS/Redhat/RHEL/F 阅读全文
posted @ 2010-08-02 01:49 SunBo 阅读(250) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示