随笔分类 -  linux

apt-get常用命令
摘要:一,什么的是apt-get高 级包装工具(英语:Advanced Packaging Tools,简称:APT)是Debian及其衍生发行版(如:ubuntu)的软件包管理器。APT可以自动下载,配置,安装二进制或者源代码格式的软 件包,因此简化了 Unix系统上管理软件的过程,apt-get命令一般需要root权限执行,所以一般跟着sudo命令。二,apt-get中文参数用法:apt-get [选项] 命令 apt-get [选项] install|remove pkg1 [pkg2 ...]apt-get [选项] source pkg1 [pkg2 ...]apt-get 是一个下载安装 阅读全文
posted @ 2013-07-01 20:56 飞奔的猪 阅读(187) 评论(0) 推荐(0)
用GDB调试程序
摘要:用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3、当程序被停住时,可以检查此时你的程序中所发生的事。 4、动态的改变你程序的执行环境。从上面看来 阅读全文
posted @ 2013-06-29 17:23 飞奔的猪 阅读(232) 评论(0) 推荐(0)
GDB调试精粹及使用实例
摘要:一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符()和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。 利用set args 命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表。 (gdb)set args –b –x (gdb) show args backtrace命令为堆栈提供向后跟踪功能。 Backtrace 命令产生一 阅读全文
posted @ 2013-06-29 17:15 飞奔的猪 阅读(212) 评论(0) 推荐(0)
应该知道的Linux技巧
摘要:这篇文章来源于Quroa的一个问答《What are some time-saving tips that every Linux user should know?》—— Linux用户有哪些应该知道的提高效率的技巧。我觉得挺好的,总结得比较好,把其转过来,并加了一些自己的理解。 首先,我想告诉大家,在Unix/Linux下,最有效率技巧的不是操作图形界面,而是命令行操作,因为命令行意味着自动化。如果你看过《你可能不知道的Shell》以及《28个Unix/Linux的命令行神器》你就会知道Linux有多强大,这个强大完全来自于命令行,于是,就算你不知道怎么去做一个环保主义的程序员, 至少他们 阅读全文
posted @ 2013-06-27 12:40 飞奔的猪 阅读(184) 评论(0) 推荐(0)
你可能不知道的Shell
摘要:Shell也叫做命令行界面,它是*nix操作系统下用户和计算机的交互界面。Shell这个词是指操作系统中提供访问内核服务的程序。这篇文章向大家介绍Shell一些非广为人知、但却实用有趣的知识,权当品尝shell主食后的甜点吧。科普先科普几个你可能不知道的事实:Shell几乎是和Unix操作系统一起诞生,第一个Unix Shell是肯·汤普逊(Ken Thompson)以Multics上的Shell为模范在1971年改写而成,并命名Thompson sh。即便是后来流行的bash(shell的一种变体),它的年龄实际上比当前流行的所有的Linux kernel都大,可谓在Linux系统 阅读全文
posted @ 2013-06-27 12:38 飞奔的猪 阅读(243) 评论(0) 推荐(0)
Vim命令合集
摘要:命令历史以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。启动vim在命令行窗口中输入以下命令即可vim 直接启动vimvim filename 打开vim并创建名为filename的文件文件命令打开单个文件vim file同时打开多个文件vim file1 file2 file3 ...在vim窗口中打开一个新文件:open file在新窗口中打开文件:split file切换到下一个文件:bn切换到上一个文件:bp查看当前打开的文件列表,当前正在编辑的文件会用[]括起来。:args打开远程文件,比如ftp或者share folder:e ftp://192 阅读全文
posted @ 2013-06-26 13:10 飞奔的猪 阅读(183) 评论(0) 推荐(0)
应该知道的Linux技巧
摘要:这篇文章来源于Quroa的一个问答《What are some time-saving tips that every Linux user should know?》—— Linux用户有哪些应该知道的提高效率的技巧。我觉得挺好的,总结得比较好,把其转过来,并加了一些自己的理解。首先,我想告诉大家,在Unix/Linux下,最有效率技巧的不是操作图形界面,而是命令行操作,因为命令行意味着自动化。如果你看过《你可能不知道的Shell》以及《28个Unix/Linux的命令行神器》你就会知道Linux有多强大,这个强大完全来自于命令行,于是,就算你不知道怎么去做一个环保主义的程序员, 至少他们可 阅读全文
posted @ 2013-06-25 20:05 飞奔的猪 阅读(151) 评论(0) 推荐(0)
Linux 下socket通信终极指南(附TCP、UDP完整代码)
摘要:linux下用socket通信,有TCP、UDP两种协议,网上的很多教程把两个混在了一起,或者只讲其中一种。现在我把自己这两天研究的成果汇总下来,写了一个完整的,适合初学者参考,也方便自己以后查阅。首先讲什么是socket,不喜欢理论的可以略过。Berkeley套接字应用程序接口(API)包括了一个用C语言写成的应用程序开发库,主要用于实现进程间通讯,在计算机网络通讯方面被广泛使用。(来自wikipedia socket)下面介绍一下常用的socket API(也来自wikipedia socket)这个列表是一个Berkeley套接字API库提供的函数或者方法的概要:socket()创建一个 阅读全文
posted @ 2013-06-19 09:09 飞奔的猪 阅读(522) 评论(0) 推荐(0)
Socket通信原理和实践
摘要:我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览 器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是 socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:1、网络中进程之间如何通信?2、Socket是什么?3、socket的基本操作3.1、socket()函数3.2、bind()函数3.3、listen()、connect()函数3.4、accept()函数3.5、read()、write()函数等3.6、close( 阅读全文
posted @ 2013-06-18 17:00 飞奔的猪 阅读(253) 评论(0) 推荐(0)
用 gdb 调试 GCC 程序
摘要:Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的一些功能:它使你能监视你程序中变量的值.它使你能设置断点以使程序在指定的代码行上停止执行.它使你能一行行的执行你的代码. 在命令行上键入 gdb 并按回车键就可以运行 gdb 了, 如果一切正常的话, gdb 将被启动并且你将在屏幕上看到类似的内容:GDB is free software and you are welcome to distribute copies of itunder c. 阅读全文
posted @ 2013-06-17 21:07 飞奔的猪 阅读(246) 评论(0) 推荐(0)
如何在linux下检测内存泄漏
摘要:要想检测内存泄漏,必须对程序中的内存分配和释放情况进行记录,所能够采取的办法有重载所有形式的operator new 和 operator delete,截获 new operator 和 delete operator 执行过程中的内存操作信息。下面列出的就是重载形式 void* operator new( size_t nSize, char* pszFileName, int nLineNum )void* operator new[]( size_t nSize, char* pszFileName, int nLineNum )void operator delete( void * 阅读全文
posted @ 2013-06-02 11:37 飞奔的猪 阅读(543) 评论(0) 推荐(0)
内核空间和用户空间
摘要:用户空间 在Linux中,每个用户进程都可以访问4GB的线性虚拟内存空间。其中从0到3GB的虚存地址是用户空间,用户进程可以直接访问。 内核空间 从3GB到4GB的虚存地址为内核态空间,存放供内核访问的代码和数据,用户态进程不能访问。所有进程从3GB到4GB的虚拟空间都是一样的,linux以此方式让内核态进程共享代码段和数据段。 阅读全文
posted @ 2013-06-02 11:36 飞奔的猪 阅读(177) 评论(0) 推荐(0)
arm linux
摘要:滚滚长江东四水,浪花淘净英雄。大家好,许多人和我一样,正在苦读linux源代码,希望有照一日,宝典在手,天下我有。小弟不才,也读了两年,写的几首歪诗。从本级开始,把我所理解的linux如何启动贴出来,不懂之处大家讨论一番。也希望把linux从头到尾讨论一遍,计划写它240回,三年写完(笑。。。),欢迎大家动员一些牛人来参与讨论,提高人气,增加流量。小弟用的是arm920T,跑LINUX 2。4。18,下面是第一回。。。。。长篇连载--arm linux演艺---第一回---------------------------------------------------------------- 阅读全文
posted @ 2013-06-02 11:32 飞奔的猪 阅读(295) 评论(0) 推荐(0)
GNU make 指南
摘要:翻译: 哈少 译者按: 本文是一篇介绍 GNU Make 的文章,读完后读者应该基本掌握了 make 的用法。而 make 是所有想在 Unix (当然也包括 Linux )系统上编程的用户必须掌握的工具。如果你写的程序中没有用到 make ,则说明你写的程序只是个人的练习程序,不具有任何实用的价值。也许这么说有点儿偏激,但 make 实在是应该用在任何稍具规模的程序中的。希望本文可以为中国的 Unix 编程初学者提供一点儿有用的资料。中国的 Linux 用户除了学会安装红帽子以外, 实在应该尝试写一些有用的程序。个人想法,大家参考。 C-Scene 题目 #2 多文件项目和 GNU Mak. 阅读全文
posted @ 2013-06-02 11:30 飞奔的猪 阅读(183) 评论(0) 推荐(0)
Makefile初探
摘要:Linux的内核配置文件有两个,一个是隐含的.config文件,嵌入到主Makefile中;另一个是include/linux /autoconf.h,嵌入到各个c源文件中,它们由make config、make menuconfig、make xconfig这些过程创建。几乎所有的源文件都会通过linux/config.h而嵌入autoconf.h,如果按照通常方法建立文件依赖关系 (.depend),只要更新过autoconf.h,就会造成所有源代码的重新编绎。 为了优化make过程,减少不必要的重新编绎,Linux开发了专用的mkdep工具,用它来取代gcc来生成.depend文件。mk 阅读全文
posted @ 2013-06-02 11:28 飞奔的猪 阅读(235) 评论(0) 推荐(0)
Linux Kernel Makefiles
摘要:1、概述Makefile 由五个部分组成:Makefile:顶层 Makefile。 .config:内核配置文件。 arch/*/Makefile:体系结构 Makefiles。 子目录 Makefile:大约三百个。 Rules.make:为所有子目录 Makefile 提供通用规则。顶层 Makefile 读入在内核配置过程中生成的 .config 文件。 顶层 Makefile 负责两个主要产品的创建:vminux (常驻内核映象) 和模块 (任何模块文件)。它通过递归下降到内核源代码树以创建这些目标。需要进入的子目录由内核配置确定。 顶层 Makefile 引入一个名为 arch/$ 阅读全文
posted @ 2013-06-02 11:27 飞奔的猪 阅读(307) 评论(0) 推荐(0)
让GCC编译关键字“__attribute__”给你带来方便
摘要:直接引入我们的主角(粗体部分):int my_printf (void *my_object, const char *my_format, ...) __attribute__ ((format (printf, 2, 3)));my_printf是一个你自己写的函数,比如可能是对vsnprintf等函数进行了封装等等。粗体部分关键字“__attribute__”可以为函数声明赋属性值,其目的是让编译程序可以优化处理。关键字“__attribute__”可以为函数(Function Attributes),变量(Variable Attributes)和结构成... 阅读全文
posted @ 2013-06-02 11:25 飞奔的猪 阅读(956) 评论(0) 推荐(0)
linux内核进程调度以及定时器实现机制
摘要:2.6版以前内核进程调度机制简介Linux的进程管理由进程控制块、进程调度、中断处理、任务队列、定时器、bottom half队列、系统调用、进程通信等等部分组成。进程调用分为实时进程调度和非实时进程调度两种。前者调度时,可以采用基于动态优先级的轮转法(RR),也可以采用先进现出算法(FIFO)。后者调度时,一律采用基于动态优先级的轮转法。某个进程采用何种调度算法由改进程的进程控制块中的某些属性决定,没有专门的系统用来处理关于进程调度的相关事宜。Linux的进程调度由schedule()函数负责,任何进程,当它从系统调用返回时,都会转入schedule(),而中断处理函数完成它们的响应任务以后 阅读全文
posted @ 2013-06-02 11:24 飞奔的猪 阅读(869) 评论(0) 推荐(0)
嵌入式软件设计中查找缺陷的几个技巧
摘要:大部分软件开发项目依靠结合代码检查、结构测试和功能测试来识别软件缺陷。尽管这些传统技术非常重要,而且能发现 大多数软件问题,但它们无法检查出当今复杂系统中的许多共性错误。本文将介绍如何避免那些隐蔽然而常见的错误,并介绍的几个技巧帮助工程师发现软件中隐藏 的错误。结构测试或白盒测试能有效地发现代码中的逻辑、控制流、计算和数据错误。这项测试要求对软件的内部工作能够一览无遗(因此称为" 白盒"或"玻璃盒"),以便了解软件结构的详细情况。它检查每个条件表达式、数学操作、输入和输出。由于需要测试的细节众多,结构测试每次检查一个软件单 元,通常为一个函数或类。代码审 阅读全文
posted @ 2013-06-02 11:23 飞奔的猪 阅读(298) 评论(0) 推荐(0)
C/C++程序内存泄漏检测
摘要:1. 包含头文件和定义:#define _CRTDBG_MAP_ALLOC#include <stdlib.h>#include <crtdbg.h>如果定义了_CRTDBG_MAP_ALLOC,打印出来的是文件名和行数等更加直观的信息。2. 方法一在程序入口写几个语句: int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG ); tmpFlag |= _CRTDBG_LEAK_CHECK_DF; _CrtSetDbgFlag( tmpFlag );程序退出时,如果发现有内存泄漏,会自动在DEBUG OUTPUT窗口和Deb 阅读全文
posted @ 2013-06-02 11:21 飞奔的猪 阅读(243) 评论(0) 推荐(0)