Linux的初步学习(3)
来源:互联网 发布:淘宝退货官方寄快递 编辑:程序博客网 时间:2024/06/05 16:31
2017年11月10日
这里接着(2)继续
对于make与Makefile :make命令运行时,须要一个 Makefile 文件,以告诉make命令须要怎么样的去编译和链接程序。
一个Makefile文件包含五个方面的内容:
1、具体规则 2、隐含规则 3、定义变量 4、指令 5、注释
隐含规则能够告诉make使用传统的标准方法完成任务。
make工具的基本用法如下:
make [-C dir] [-f file] [target ...]
-C dir: 执行时进入dir目录,默认是当前目录
-f file: 使用file作为Makefile
target: 要完成的目标,目标在Makefile中定义,默认是定义的第1个目标
规则的基本格式是:
target: dependency
(Tab字符)command
target(目标): 通常是要产生的文件的名称
dependency(依赖): 指用来输入从而产生目标的文件
command(命令): 是make执行的动作,一个规则可以有多条命令,每个命令占一行。命令行的第一个字符是Tab。
例如:
先vim hello.c 再vim print.c 最后vim Makefile:
target=hello
object=hello.o print.o
CC=gcc
$(target):$(object)
$(CC) $(object) -o $(target)
.PHONY:clean (设置伪目标 防止被清除 )
clean:
rm *.o $(target)
补充:$后面只能加(),只对于Makefile.
程序头文件中 <>表示在系统指定目录中找
“ ”表示在当前目录中找
对于GDB: GDB是GNU的调试工具,它可以跟踪被调试的程序,进行设置断点、单步执行等操作。
步骤:
被调试的应用程序在编译时最好使用-g参数将调试信息编入目标文件中:
gcc -g app.c -o app
用以下命令启动对程序app的调试:
gdb app
如果程序app运行时需要参数,则用以下命令:
gdb --args app arg1 arg2 # arg1和arg2被视为app的参数,而不是gdb的参数
常用命令:list l 列出源码; break b 设置断点; run r 运行;
continue c 从停止处继续运行程序;
next n 向前执行一句(不进入被调用函数中); step s 向前执行一句(可进入被调用函数中);
return ret 从当前函数返回; printf p 显示变量或表达式的值;
x x 显示内存值; quit q 退出gdb;
Shell: Shell是命令解析器,将用户的输入的指令转化为机器可以运行的程序。
Linux的Shell种类众多,不同的Shell语言的语法有所不同,所以不能交换使用。
我们关注的重点是Bash,在一般情况下,人们并不区分 Bourne Shell和Bourne Again Shell,
所以,在下面的文字中,我们可以看到#!/bin/sh,它同样也可以改为#!/bin/bash。
利用vi等文本编辑器编写Shell脚本的格式是固定的,如下:
#!/bin/sh
#comments
Your commands go here
首行中的符号#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程 序。
编辑完毕,将脚本存盘为filename.sh,文件名后缀sh表明这是一个Bash脚本文件。
执行脚本的时候,要先将脚本文件的属性改为可执行的: chmod +x filename.sh
执行脚本的方法是: ./filename.sh
对于echo : echo $#:传入脚本的命令行参数个数
echo $*:所有命令行的参数值,在各个参数值之间留有空格
echo $0:命令本身(shell文件名)
echo $1:第一个命令行参数
echo $2:第二个命令行参数
例如:#! /bin/sh
a="hello world" (注意不要有空格)
echo "this is ${a}"
echo $0
echo $1
echo $2
echo $*
echo $#
保存退出 ,再sh xx.sh a b c d e (sh 是授予权限运行)
结果是 this is hello world
xx.sh
a
b
a b c d e
5
Shell中 -f 判断文件是否存在 -d 判断目录是否存在
- Linux的初步学习(3)
- Linux的初步学习
- Linux的初步学习(1)
- Linux的初步学习(2)
- 41、Linux初步(学习到的linux命令)
- Linux初步学习 (一)
- Linux初步学习 (二)
- Linux初步学习 (三)
- Linux初步学习 (四)
- Linux初步学习 (五)
- Linux初步学习 (六)
- linux初步学习(1)
- Linux初步学习(文件权限的三个命令)
- Linux下execl函数的初步学习
- Linux学习笔记:vim的初步使用
- Linux同步的实现初步学习
- JQuery的学习(初步)
- 第二周:Linux初步学习(二)
- java poi 导入excel
- Scrapy 和 scrapy-redis的区别
- makefile 坑若干
- java集合分析(6):AbstractList
- 自定义JAVA线程池拒绝策略
- Linux的初步学习(3)
- CentOS免密登录设置
- HTML5实现图片压缩上传功能
- HOG+LBP+Haar
- 我的第一篇博客————从TI创新实验室开始
- 【oracle无法远程连接】oracle设置允许远程连接
- IndicateProgressBar 带指示器的ProgressBar进度条
- JAVA多线程有哪几种实现方式?
- 用Vue写backToTop指令