0.开发环境-Linux
文章平均质量分 50
介绍Linux环境下开发涉及的若干方面。
1.Vim
2.Gcc
3.Makefile
4.Gdb
5.Bash
6.Shell
7.Git
raindayinrain
金融it研究院
专注于低延时&高并发网络库,高可用&负载均衡分布式软件架构
展开
-
Makefile--使用make更新函数库文件
使用make更新函数库文件函数库文件也就是对Object文件(程序编译的中间文件)的打包文件。在Unix下,一般是由命令"ar"来完成打包工作。 函数库文件的成员一个函数库文件由多个文件组成。你可以以如下格式指定函数库文件及其组成: archive(member)这个不是一个命令,而一个目标和依赖的定义。一般来说,这种用法基本上就是为了"ar"命令来服务的。如:foolib(hack.o) : hack.o ar cr foolib hack.o如果要指定多个member原创 2020-08-02 21:29:33 · 163 阅读 · 0 评论 -
Makefile--隐含规则
隐含规则在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则。“隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运行,那怕我们的Makefile中没有书写这样的规则。例如,把[.c]文件编译成[.o]文件这一规则,你根本就不用写出来,make会自动推导出这原创 2020-08-01 22:43:40 · 427 阅读 · 0 评论 -
Makefile--Make运行
Makefile一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如何使用 make命令的。 make的退出码make命令执行后有三个退出码: 0 —— 表示成功执行。1 —— 如果make运行时出现任何错误,其返回1。2 —— 如果你使用了make的“-q”选项,并且mak原创 2020-08-01 21:32:01 · 605 阅读 · 0 评论 -
Makefile--使用函数
使用函数在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。 函数的调用语法函数调用,很像变量的使用,也是以“$”来标识的,其語法如下: $(<function> <arguments>)或是${<function> <arguments>}这里,<function>就是函数名,make原创 2020-08-01 21:14:19 · 275 阅读 · 0 评论 -
Makefile--使用条件判断
使用条件判断使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值,或是比较变量和常量的值。 示例下面的例子,判断$(CC)变量是否“gcc”,如果是的话,则使用GNU函数编译目标。 libs_for_gcc = -lgnunormal_libs =foo: $(objects)ifeq ($(CC),gcc) $(CC) -o foo $(objects) $(libs_for_gcc)else $(CC) -o foo $(o原创 2020-07-31 22:20:19 · 162 阅读 · 0 评论 -
Makefile--使用变量
使用变量在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”, “命令”或是Makefile的其它部分中。变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有“:”、“#”、“=”或是空字符(空格、回车等)变量是區分英文字母大小写的,“foo”、“Foo”原创 2020-07-31 21:52:47 · 359 阅读 · 0 评论 -
Makefile--书写命令
书写命令每条规则中的命令和操作系统Shell的命令行是一致的。make会按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被“/bin/sh”——UNIX的标准Shell解释执行的。除非你特别指定一个其它的Shell。Makefile中,“#”是注释符,很像C原创 2020-07-31 20:38:19 · 93 阅读 · 0 评论 -
Makefile--书写规则
书写规则规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么,第一个目标会成为最终的目标。make所完成的也就是这个目标。好了,还是让我们来看一看如何书写规则。规则举例f原创 2020-07-30 22:24:16 · 159 阅读 · 0 评论 -
Makefile介绍
Makefile介绍makefile的规则 target ... : prerequisites ... command ... ... target可以是一个object file(目标文件),也可以是一个执行文件,还可以是一个标签(label)。 prerequisites就是,要生成那个target所需要的文件或是目标。 command也就是make需要执行的命令。(任意的shell命令) 这是一个文件的依赖关系,也就是说, target这一个或多个的目标文件依赖于pr原创 2020-07-30 21:33:31 · 102 阅读 · 0 评论 -
Git
git初始化一个Git仓库使用git init命令。添加文件到Git仓库,分两步:第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;第二步,使用命令git commit,完成。要随时掌握工作区的状态,使用git status命令。如果git status告诉你有文件被修改过,用git diff可以查看修改内容。HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。穿梭前,用git log可原创 2020-07-29 00:30:59 · 93 阅读 · 0 评论 -
sed和gawk
sed和gawksed对输入执行字符串替换s命令会用斜线间指定的第二个文本字符串来替换第一个文本字符串模式。在本例中是big test替换了test。sed编辑器并不会修改文本文件的数据。它只会将修改后的数据发送到STDOUT。如果你查看原来的文本文件,它仍然保留着原始数据。要在sed命令行上执行多个命令时,只要用-e选项就可以了。$ sed -e ‘s/brown/green/; s/dog/cat/’ data1.txt两个命令都作用到文件中的每行数据上。命令之间必须用分号隔开原创 2020-07-29 00:03:15 · 211 阅读 · 0 评论 -
Shell--脚本
Bash Shell–脚本date命令:显示当前日期和时间who命令:显示当前是谁登录到了系统上。这种技术对于小型脚本尚可,但它有一个很大的缺陷:每次运行之前,你都必须在命令提示符下输入整个命令。可以将这些命令组合成一个简单的文本文件,这样就不需要在命令行中手动输入了。在需要运行这些命令时,只用运行这个文本文件就行了。创建shell脚本文件在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。其格式为:#!/bin/bash在通常的shell脚本中,井号( #)用作注原创 2020-07-28 00:06:47 · 274 阅读 · 0 评论 -
Bash--文件系统
Bash Shell–文件系统ext文件系统:扩展文件系统,使用虚拟目录来操作硬件设备,在物理设备上按定长的块来存储数据。采用名为索引节点的系统来存放虚拟目录中所存储文件的信息。索引节点系统在每个物理设备中创建一个单独的表(称为索引节点表)来存储这些文件的信息。存储在虚拟目录中的每一个文件在索引节点表中都有一个条目。Linux通过唯一的数值(称作索引节点号)来引用索引节点表中的每个索引节点,这个值是创建文件时由文件系统分配的。文件系统通过索引节点号而不是文件全名及路径来标识文件。ext2文原创 2020-07-27 23:20:36 · 166 阅读 · 0 评论 -
Bash--权限管理
Bash Shell–Linux文件的权限文件的权限用户权限通过创建用户时分的用户ID(User ID,通常缩写为UID)来跟踪的。登陆系统时使用的是登录名。Linux系统会为各种各样的功能创建不同的用户账户,而这些账户并不是真的用户。这些账户叫作系统账户,是系统上运行的各种服务进程访问资源用的特殊账户。所有运行在后台的服务都需要用一个系统用户账户登录到Linux系统上。添加新用户用来向Linux系统添加新用户的主要工具是useradd。从系统中删除用户可以用userdel命令。默认情原创 2020-07-27 22:01:25 · 766 阅读 · 0 评论 -
Bash--使用 Linux环境变量
Bash Shell–使用 Linux环境变量环境变量bash shell用一个叫作环境变量( environment variable)的特性来存储有关shell会话和工作环境的信息。这项特性允许你在内存中存储数据,以便程序或shell中运行的脚本能够轻松访问到它们。在bash shell中,环境变量分为两类:全局变量和局部变量。全局环境变量对于shell会话和所有生成的子shell都是可见的。局部变量则只对创建它们的shell可见。系统环境变量基本上都是使用全大写字母,以区别于普通用户的环原创 2020-07-27 21:23:01 · 820 阅读 · 0 评论 -
Bash--Shell,后台模式
Bash Shell理解shell,什么是shell?默认的系统shell设置为bash shell。进程列表,命令之间加入分号;,包含在括号里。要想知道是否生成了子shell,得借助一个使用了环境变量的命令。echo $BASH_SUBSHELL。如果该命令返回0,就表明没有子shell。如果返回1或者其他更大的数字,就表明存在子shell。数字1表明创建了子shell用于执行命令。在命令列表中嵌套括号来创建子shell的子shell。后台模式:sleep命令sleep命令原创 2020-07-27 21:04:01 · 466 阅读 · 0 评论 -
Bash--进程状态及控制,磁盘管理,压缩,打包,解压
Base Shell命令–进程状态及控制,磁盘管理,压缩,打包,解压psPID:程序的进程ID ,TTY:运行终端 TIME CMD:进程已用的CPU时间UID:启动进程的用户。PID:进程的进程ID。PPID:父进程的进程号C:进程生命周期中的CPU利用率。STIME:进程启动时的系统时间TTY:进程启动时的系统时间TIME:运行进程需要的累计CPU时间。CMD:启动的程序名称。使用了-l参数之后多出的那些列。 F:内核分配给进程的系统标记。 S:进程的状态( O代表正原创 2020-07-26 23:32:09 · 339 阅读 · 0 评论 -
Base--文件和目录
Base shell命令目录pwd命令可以显示出shell会话的当前目录,这个目录被称为当前工作目录。ls 命令最基本的形式会显示当前目录下的文件和目录。 - 可用带**-F**参数的ls命令轻松区分文件和目录。 - ls -a命令把隐藏文件和普通文件及目录一起显示出来。 - -R参数叫作递归选项。它列出了当前目录下包含的子目录中的文件。 - $ls -l显示附加信息。-l参数会产生长列表格式的输出,包含了目录中每个文件的更多相关信息。 文件类型 比如目录(d)、文件( -)、字符原创 2020-07-26 22:33:25 · 1422 阅读 · 0 评论 -
Gcc
Gcc程序编译过程1. 预处理在这一阶段,源码中所有的预处理语句得到处理,例如#include语句所包含的文件内容替换掉语句本身所有已定义的宏被展开根据#ifdef #if等语句的条件是否成立取舍相应部分gcc预处理阶段可以生成.i文件,通过选项-E可以使编辑器在预处理结束时停止编译。例如:gcc -E -o hello.i hello.c2. 编译在这一阶段,编译器对源码进行语法分析,优化等操作,最后生成汇编代码。这是整个过程中最重要的一部。可以通过选项-S使GCC在进行完编原创 2020-07-25 00:18:06 · 772 阅读 · 0 评论 -
Vim
Vim命令模式下定位[数字]上/下/左/右[数字]b/e/w 或 【数字】B/E/W命令模式下删除+进入编辑c + [数字]上/下/左/右 或者 [数字]b/e/w 或者 [数字]B/E/Wcc 删除一行+进入编辑命令模式下删除d + [数字]上/下/左/右 或者 [数字]b/e/w 或者 [数字]B/E/Wdd 删除一行打开多个文件vim xx1 打开xx1命令模式 :e xx2,打开xx2所有打开文件:ls可看每个打开文件都产生一个缓冲区:b no 切原创 2020-07-22 23:59:29 · 780 阅读 · 0 评论