![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux系统编程
文章平均质量分 88
XuLujuncsdn
想要的,自己给自己。
展开
-
Linux环境下的GCC工具链详解(二)
一、程序的编译过程二、gcc的基本用法gcc的基本用法如下:gcc [-Wall] [-O1..3] [-g] [-o name] file...-Wall: 打开所有警告项-O: 设置优化级别,O0表示关闭优化功能-g: 将调试信息编译到目标文件中-o name: 指定输出文件的名称是namefile: 被编译(链接)的文件转载 2016-10-09 12:06:06 · 702 阅读 · 0 评论 -
Linux环境下的make和Makefile 详解(一)
一、定义一个软件工程通常会包含几十上百个文件,如果每次编译都通过命令行手动编译往往会很麻烦而且效率低下。 在Windows平台上的VC、VB等都有一个工程(Project)的概念。一旦建立了一个工程,这些开发平台会自动地维护其中的各种文件,从而可以很高效地完成编译工作。 幸运的是,在Linux中同样有一个功能强大、使用方便的工程管理工具,这就是make。 二转载 2016-10-10 17:48:59 · 566 阅读 · 0 评论 -
vi编辑器的使用进阶(一)
一、设置 vi 和 Vim 配置选项set 命令使用户能够设置内部 vi 和 Vim 变量。变量根据不同的类型以不同方式予以设置:设置为 on 或 off 的变量由 set variable 命令设置,使用 set novariable 命令取消设置。取值的变量由 set variable=value 命令设置。例如,set list 命令设置列表选项,该选转载 2016-10-21 17:28:14 · 539 阅读 · 0 评论 -
Linux环境下的make和makefile详解(二)
一、Makefile的示例objects = main.o mouse.o command.o display.oCC = gccCFLAGS = -Wall -O2 -ggame : $(objects)$(CC) -o edit $(objects)main.o : defs.hmouse.o : defs.h command.hcommand.o : defs转载 2016-10-11 18:39:42 · 315 阅读 · 0 评论 -
Linux环境下的make和makefile详解(三)
一、Makefile的隐含规则 隐含规则能够告诉make使用传统的标准方法完成任务。例如,生成一个目标文件的方法是使用C编译器编译C语言源程序,这个步骤所用到的命令基本都是相同的。使用隐含规则就无须详细指定这些命令,而make能按照文件名的后缀的变化,决定所采用的规则。二、Makefile的示例三、Makefile的变量变量是在Makefile中定义的名转载 2016-10-12 16:10:45 · 385 阅读 · 0 评论 -
C语言的一些关键字(四)
一、关键字-extern如果一个函数只能被本文件中其它函数所调用,称为内部函数(或静态函数)。定义时在函数类型前加static。static int fac(int x){ ……}extern int fac(int x){ ……}二、关键字-struct在网络协议、通信控制、嵌入式系统的C/C++编程中,我们经常要传转载 2016-11-03 17:43:13 · 306 阅读 · 0 评论 -
自己编写的字符串处理函数
#include //#include #define MAX_SIZE 1024/*把值定义在外面容易修改*/int my_strlen(char *str){ int len = 0; while(*str != '\0') { len++;str++; } return len;}转载 2016-10-23 18:26:38 · 559 阅读 · 0 评论 -
Linux环境下的make和makefile详解(四)
一、Makefile中的几个特殊变量二、Makefile变量的赋值定义或修改变量值的方法是使用赋值操作Makefile中使用变量时用的是$(),如果变量名只是一个字符,则小括号可以省略。 三、make工具的基本用法make工具的基本用法如下:make [-C dir] [-f file] [target ...]-C dir: 执转载 2016-10-13 22:14:34 · 314 阅读 · 0 评论 -
C语言中的一些关键字(五)
一、关键字-structstruct date{ int year; int month; int day;};struct student{ int num; char name[20]; char sex; struct date birthday; char转载 2016-11-04 19:25:59 · 399 阅读 · 0 评论 -
动态库与静态库
一、库的含义程序库:包含了一些通用函数的数据和二进制可执行机器码的文件,其单独不能够运行,但是如果将其与其他的可执行程序结合起来就可以执行了静态库:是在执行程序之前就已经加入到执行代码中,成为执行程序的一部分来执行的,后缀名:.a动态库:是在执行程序启动时加载到执行代码中,后缀名:.so二、静态库与动态库区别:动态库只有在使用它的程序执行时才被链接使用,而不是将需要的部转载 2016-09-28 22:06:02 · 305 阅读 · 0 评论 -
Linux环境下的gdb调试工具详解(一)
一、含义GDB是GNU的调试工具,它可以跟踪被调试的程序,进行设置断点、单步执行等操作。当程序暂停执行时,可以使用命令查看程序中的变量值、CPU的寄存器值、内存的值以及函数调用栈等信息。 被调试的应用程序在编译时最好使用-g参数将调试信息编入目标文件中:gcc -g app.c -o app用以下命令启动对程序app的调试:gdb app如果程序app运行时需要参数,转载 2016-10-14 19:59:34 · 390 阅读 · 0 评论 -
带有表头的单链表
/*****************************************************copyright (C), 2014-2015, Lighting Studio. Co., Ltd. File name:Author:fhb Version:0.1 Date: Description:Funcion List: ******原创 2016-11-05 21:44:25 · 783 阅读 · 0 评论 -
工程管理之makefile与自动创建makefile文件过程
一、Linux Makefile介绍Linux Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Linux Makefile中纪录有文件的信息,在Linux Makefile时会决定在链接的时候需要重新编译哪些文件。Linux Makefile的宗旨就是:让编译器知道要编译一个文件需要依赖其他转载 2016-10-25 18:14:50 · 291 阅读 · 0 评论 -
Linux环境下的Shell使用进阶(一)
一、环境变量Linux是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量。常见的环境变量有: PATH——决定了shell将到哪些目录中寻找命令或程序 HOME——当前用户主目录 HISTSIZE——历史记录数 LOGNAME——当前用户的登录名 HOSTNAME——指主机的名称 SHELL——前用户Shell类转载 2016-10-15 18:11:49 · 352 阅读 · 0 评论 -
c语音的一些关键字(六)
关键字-struct在定义结构体变量的同时,可以进行初始化。注意:结构体变量的各个初值用花括号{、}括起来,大括号内各个成员变量的值之间用逗号分隔,其值必须与成员变量一一对应,且数据类型应与成员变量一致。 struct student { int num; char name[20];转载 2016-11-06 19:45:58 · 387 阅读 · 0 评论 -
Linux环境下的调试器—gdb
一、含义gdb是GNU发布的一款功能强大的程序调试工具。GDB主要完成下面三个方面的功能:1、启动被调试程序。2、让被调试的程序在指定的位置停住。3、当程序被停住时,可以检查程序状态-变量值二、简单命令示例$ gcc -g test.c -o test$ gdb testGNU gdb Red Hat Linux (6.3.0.0-1.21rh)Copyri转载 2016-09-29 22:17:25 · 440 阅读 · 0 评论 -
Linux环境下的工程管理器—make
一、定义 工程管理器,顾名思义,是指管理较多的文件 Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作 。二、使用命令简介 makefile是make读入的惟一配置文件,因此本节的内容实际就是讲述makefile的编写规则。在一个makefi转载 2016-09-30 18:50:29 · 704 阅读 · 0 评论 -
Linux环境下的Shell使用进阶(二)
一、分支结构Shell支持分支结构,其中if分支结构的语法如下:if list; then list; [elif list; then list;] ... [else list;] fi这里各个list都代表一条或多条命令,方括号包围的部分为可选内容。 执行流程是:先执行if子句中的命令,如果执行成功,则执行then子句中的命令,执行完毕后流程结束,转移到fi后面去执行;转载 2016-10-16 19:38:41 · 250 阅读 · 0 评论 -
C语言中的一些关键字(七)
关键字-structstruct student{ int num; char name[20]; float score;}stu[ ]={{.num=10101, .name="Li Ming", .score=88},{.num=10102, .name="Zhang Jin", .score=92},{.num=10103,转载 2016-11-07 16:58:49 · 389 阅读 · 1 评论 -
定制 vi 和 Vim 编辑器
vi 和 Vim 定制的类型vi 和 Vim 编辑器在文本文件或环境变量中存储定制(这将在下一节中讨论)。每个 vi 或 Vim 配置文件都可以包含任何数量的配置和定制命令类型,如 表 1 所示。表 1. 配置和定制命令命令描述ab在 Insert 模式下输入文本时若遇到特定字符序列,可定义缩略词。这些缩略词的功能如同转载 2016-10-26 20:13:32 · 727 阅读 · 0 评论 -
Linux环境下的工程管理器—make(二)
工程管理器——make 一、顺序在Makefile 中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。二、有关命令make命令默认在当前目录下寻找名字为makefile或者Mak转载 2016-10-01 21:37:46 · 370 阅读 · 0 评论 -
Linux环境下的Shell使用进阶(三)
一、分支结构表达式可以进行逻辑操作,形成一个新的表达式,如:test命令又经常写为左方括号[,[也是一个命令,功能与test相同,但要求最后一个参数是右方括号],以求形式上的完整,如:二、循环结构 Shell也支持循环结构,其中for循环的一种语法如下:for var in str1 str2 str3 ... ; do list; done转载 2016-10-17 13:33:16 · 296 阅读 · 0 评论 -
Linux环境下的脚本—shell
Linux环境下的脚本—shell一、概念确切一点说,Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序转载 2016-10-02 20:11:52 · 489 阅读 · 0 评论 -
Linux环境下的脚本—shell(二)
一、变量在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写:变量名=值取出变量值可以加一个美元符号($)在变量前面;变量赋值时,“=”两边都不能有空格BASH中的语句结尾不需要分号;例:HelloWorld #!/bin/sh #对变量赋值:a="hello wor转载 2016-10-03 19:48:55 · 326 阅读 · 0 评论 -
c语音基本数据类型(一)
一、基本数据类型基本类型:又称非构造性数据类型,其构造简单,是由系统事先定义好的。构造类型:又称复杂数据类型,一般由程序员将其它数据类型(包括构造类型本身)按一定的规则构造而成。指针类型:指针变量中只能存放地址(指针)。主要用于解决动态数据的建立、删除和使用。空类型: 主要用于数据类型的转换和定义函数的类型C程序中的数据类型有常量和变量之分,分别属于以上这些数据转载 2016-10-27 19:58:46 · 1360 阅读 · 0 评论 -
C语言的一些关键字(八)
关键字-union有时候需要将几种不同类型的变量存放到同一段内存单元中。分配空间字对齐!4的整数倍!union node{ char ch[7]; int num;}; 占8字节!可以把一个整型变量、一个字符型变量、一个实型变量放在同一个地址开始的内存单元中。即使几个不同的变量共占同一段内存空间。所谓“共用体(union)”是指使几个不同的变转载 2016-11-08 20:46:22 · 306 阅读 · 0 评论 -
Linux环境下的脚本—shell(三)
一、默认变量$#:传入脚本的命令行参数个数$*:所有命令行参数值,在各个参数值间留有空格$0:命令本身(shell文件名)$1:第一个命令行参数$2:第二个命令行参数二、局部变量在变量首次被复制时加上local关键字可以什么一个局部变量, 例S3: #!/bin/bashhello="var1“echo $hellofunction func1 {转载 2016-10-04 19:27:22 · 466 阅读 · 0 评论 -
Linux环境下的脚本—shell(四)
一、FOR语句for循环与C语言中有所不同,在BASH中for循环的基本结构是:for var in [list]do#code blockdone其中var是循环控制变量, [list]是var需要遍历的一个集合,do/done包含了循环体,相当于c语言中的大括号。另外do和for被写在同一行,必须在do前面加上“;”如: for var in [list];do转载 2016-10-05 16:51:53 · 319 阅读 · 0 评论 -
Linux的文件系统结构
一、Linux的文件系统结构Linux的文件系统和MS-Windows的文件系统有很大的不同,对于微软视窗系统的文件结构我在这里不再多说,我们主要了结一下linux的文件系统结构. linux只有一个文件树,整个文件系统是以一个树根"/"为起点的,所有的文件和外部设备都以文件的形式挂结在这个文件树上,包括硬盘,软盘,光驱,调制解调器等,这和以"驱动器盘符为基础的MS-Windows系统是大不相转载 2016-10-18 18:52:41 · 384 阅读 · 0 评论 -
C语言中的一些关键字(九)
一、关键字-enum枚举类型声明代表常量的符号名称。enum的默认值 enum kids{nippy, slats, skippy, nina ,liz};enum的指定值 enum levels {low=100,medium=500,high=2000};enum的用法 作为switch的标签typedef是C语言的关键字,其作用是为一种转载 2016-11-09 17:28:38 · 356 阅读 · 0 评论 -
linux环境下的vi编辑器详解(一)
一、vi的工作模式vi编辑器是Linux系统上常用的文本编辑器,它的改进版本vim增加了很多扩展功能,使之更适合编辑各种程序语言的源代码。 vi有两种基本工作模式: 命令模式 输入的字符作为命令使用,不进入被编辑的文档中。 编辑模式 输入的字符将修改文档的内容。 在命令模式下,如果输入某些编辑命令,则切换到编辑模式;在编辑模式下,按Esc转载 2016-10-06 19:56:21 · 487 阅读 · 0 评论 -
输入5个数(含负数、小数)将它们按由小到大的顺序排列起来
/功能:实现自定义个数从小到大的排序#include #define MAXSIZE 100int sequence(float *num_array,int num){int i;int j;float tmp;for(i = 0;i {for(j = i + 1; j {if(*(num_array + i) > *(num_ar转载 2016-10-28 23:19:57 · 2124 阅读 · 0 评论 -
Linux的文件系统
8. /tmp和/var 这两个目录用来存放临时文件和经常变动的文件。 9. /dev 这是一个非常重要的目录,它存放着各种外部设备的镜像文件,其中有一些内容我们是要牢牢记住的。例如第一个软盘驱动器的名字是fd0;第一个硬盘的名字是hda,硬盘中的第一个分区是hda1,第二个分区是hda2;第一个光盘驱动器的名字是hdc;此外,还用modem和其他外设的名字,在转载 2016-10-19 19:43:32 · 238 阅读 · 0 评论 -
基本数据类型(二)
一、数据类型说明符号printf( )函数功能:向终端输出若干个任意指定类型的数据格式:printf("格式控制",参数表列);二、输出函数格式控制字符三、输入函数格式控制字符scanf( )函数功能:等待用户从键盘上输入数据,然后按格式控制的要求对数据进行转换后送到相应的变量地址中去。格式:scanf(“格式转载 2016-10-29 20:52:26 · 277 阅读 · 0 评论 -
Linux 环境下的vi编辑器详解(二)
一、普通模式在普通模式下输入小写字母v进入选择模式,输入大写字母V进入按行选择模式,按Ctrl+V组合键进入按列选择模式。转载 2016-10-07 21:43:17 · 323 阅读 · 0 评论 -
变量及进程空间
一、声明与定义定义:创建一个变量,为其分配内存空间,并为它取名字(变量名),一个变量只能定义一次;声明:告知编译器,这个名字(变量名)已经匹配在一块内存上了,但是并未为其分配内存;二、变量初始化一般变量初始化的方法: 默认初始化规则: 全局变量、静态变量 局部变量 人工初始化: 数值变量 字符转载 2016-10-30 19:34:50 · 396 阅读 · 0 评论 -
vi编辑器的基本操作
1.简单回顾2.移动光标 0 数字0,将光标移动到该行的行首 $ 将光标移动到该行的行末 H 将光标移动到该屏幕的顶端 M 将光标移动到该屏幕的中间 L 将光标移动到该屏幕的底端 gg 将光标移转载 2016-10-20 20:06:30 · 544 阅读 · 0 评论 -
Linux环境下的GCC工具链详解(一)
一、说明 GNU/Linux系统上常用的编译工具是GCC。GCC实质上不是一个单独的程序,而是多个程序的集合,因此通常称为工具链。二、程序的编译过程 从C语言源码到可执行程序一般要经过以下的处理步骤:1. 预处理 在这一阶段,源码中的所有预处理语句得到处理,例如 #include语句所包含的文件内容替换掉语句本身 所有已定义的宏被展开 根据#ifde转载 2016-10-08 19:45:31 · 6362 阅读 · 1 评论 -
C语言中的一些关键字(一)
一、关键字-registerregister:请求编译器尽可能地将变量存在CPU内部寄存器中;使用注意:register修饰变量的类型必须是CPU所接受的;register变量可能不是在内存中存储,所以不能使用&来获取变量的地址二、关键字-static全局静态变量:作用范围局限于它的源文件,即只有本文件内的代码才可以访问它,变量名在其他文件内不局部静态变量:转载 2016-10-31 13:08:19 · 372 阅读 · 0 评论 -
C语言中的一些关键字(十)
一、宏-#define函数式宏定义的优点尽管函数式宏定义和真正的函数相比有很多缺点,但只要小心使用还是会显著提高代码的执行效率,毕竟省去了分配和释放栈帧、传参、传返回值等一系列工作,因此那些简短并且被频繁调用的函数经常用函数式宏定义来代替实现。用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)写一个"标准"宏MIN函数 ,这个宏输入两个参数并返回较转载 2016-11-10 19:16:53 · 368 阅读 · 0 评论