Linux基础学习
来源:互联网 发布:sql拒绝访问 编辑:程序博客网 时间:2024/05/29 09:16
一、gcc工具链
编译指令:
gcc test.c -o test / gcc -o test test.c
生产test可执行文件
编译:四个部分:预处理
编译
汇编
连接
1.预处理:
gcc -E test.c -o test.i 或 gcc -E test.c
可以输出test.i文件中存放着test.c经预处理之后的代码。
gcc的-E选项,可以让编译器在预处理后停止,并输出预处理结果。
2.编译:
预处理之后,可直接对生成的test.i文件编译,生成汇编代码:
gcc -S test.i -o test.s
gcc的-S选项,表示在程序编译期间,在生成汇编代码后,停止,-o输出汇编代码文件
3.汇编:
gcc -c test.s -o test.o
编译成二进制文件
4.连接:
对于生成的test.o,将其与C标准输入输出库进行连接,最终生成程序test
gcc test.o -o test
在命令行窗口中,执行./test
多个文件:例:gcc test.c print.c -o
常用指令:
-I dir:在头文件的搜索路径列表中添加dir目录
-L dir :在库文件的搜索路径列表中添加dir目录
二、make,Makefile
一个Makefile文件包含五个方面的内容:
具体规则
隐含规则
定义变量
指令
注释
规则的基本格式是:
target: dependency
(Tab字符)command
三、gdb调试
被调试的应用程序在编译时最好使用-g参数将调试信息编入目标文件中:
gcc -g app.c -o app
用以下命令启动对程序app的调试:
gdb app
如果程序app运行时需要参数,则用以下命令:
gdb --args app arg1 arg2
arg1和arg2被视为app的参数,而不是gdb的参数
GDB交互界面
四、shell使用基础
利用vi等文本编辑器编写Shell脚本的格式是固定的,如下:
#!/bin/sh
#comments
Your commands go here
首行中的符号#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程 序。
编辑完毕,将脚本存盘为filename.sh,文件名后缀sh表明这是一个Bash脚本文件。执行脚本的时候,要先将脚本文件的属性改为可执行
chmod +x filename.sh
执行脚本的方法是:
./filename.sh
在shell编程中,所有的变量都由字符串组成,并且不需要预先对变量进行声明,例s1:
#!/bin/sh
#set varible a
a="hello world"
#print a
echo "A is:"
echo $a
默认变量:
$#:传入脚本的命令行参数个数
$*:所有命令行的参数值,在各个参数值之间留有空格
$0:命令本身(shell文件名)
$1:第一个命令行参数
$2:第二个命令行参数
条件判断命令:
test n1 -参数 n2(或 –参数 表达式)
真返回0,假返回1。
参数:
-lt 小于
-le小于等于
-gt 大于
-ge 大于等于
-eq 等于
-ne 不等于
整数
test1 -lt 4
判断1<4
test语句的等价形式[ 1 –lt 4 ]
seq命令
产生1-9的数字序列
例:seq 1 4
表达式求值:
$ expr 1+3
$ expr 1 \* 3
$ echo `expr 1 + 3`
for:输出100内10的倍数
for i in `seq 1 9`
do
echo ` expr $ i \*1 10 `
done
read:
read 变量1【变量2 ....】
可以从键盘上读取多个变量的值
例:输出a到b序列各数的10倍数
read a b
for i in `seq $a $b `
do
echo `expr $i \* 10`
done
while:求1-100的和
i=1
sum=0
while [ $i -le 100]
do
sum=$[$sum + $i]
i=$[$i+1]
done
echo $sum
- Linux基础 Shell基础学习
- Linux学习基础
- Linux 学习基础
- Linux基础 学习笔记
- Linux学习基础!
- Linux学习基础!
- Linux基础学习
- Linux基础学习
- Linux基础学习
- Linux学习基础
- Linux基础学习笔记
- Linux 学习基础
- linux基础学习
- Linux 基础命令学习
- Linux基础学习摘要
- linux基础学习
- Linux基础学习
- Linux基础学习笔记
- ubuntu16.04下u盘的自动挂载(脚本)
- javascript语法基础博客
- 操作系统信号量
- 用户分类
- Java内存溢出(OOM)异常完全指南3
- Linux基础学习
- java作业
- 继承
- 0语法
- 深度优先搜索 poj 2386
- Linux环境中连接Basler相机(Pylon软件的安装),ROS环境中连接Basler相机
- 使用shadowsocks文明上网的过程
- Android 网络工具类NetworkUtils使用
- 由一次程序设计引发的ios开发学习(序)