linux之gcc,g++,shell和makefile_2

1 程序编译过程

解释性语言  
	源代码    ------>     可执行程序文件 库(动态库,静态库)
			  编译器
	汇编  C  C++  java C#  objective-c

脚本语言
	源代码就是可执行程序文件
	shell  javsscript  python  

linux:
	GNU  命令 

windows:
	集成开发环境   vs系列  vc++6.0  devC++ QtCreator


程序从源代码  到  可执行程序 中间经历哪些步骤:
	预处理:预处理指令执行   宏 展开
		#if 0
		#else
		#endif

		gcc -E test.c 
		gcc -E test.c > test.txt

观察到预编译做了宏的展开:

在这里插入图片描述
在这里插入图片描述

预编译:
	编译:
		语法检查  程序优化
		生成目标程序  后缀是 .o     二进制文件

		仅编译:
			gcc -c  *.c  -o  *.o
			
		编译成汇编:
			gcc -S *.c   -o *.s

在这里插入图片描述
在这里插入图片描述

链接:
		多个目标程序 包括 库 链接成一个可执行程序文件

		gcc 1.o 2.o 3.o -o *.exe

在这里插入图片描述
不用 -o 指定就会默认生成 a.out

2 多文档编译

多文档编译:
每个部分  声明在.h中  定义在.c中
	main.c  
	add.c add.h
	sub.c sub.h
	cheng.c cheng.h 

分开编译
	gcc -c main.c   生成   main.o
	gcc -c add.c    生成   add.o
	gcc -c sub.c    生成   sub.o
	gcc -c cheng.c  生成   cheng.o

一起链接
	gcc main.o add.o sub.o cheng.o 
	生成 可执行程序  默认a.out

在这里插入图片描述

3 makefile

这里先删掉,一般我们使用makefile
在这里插入图片描述
makefile
$@ 目标
$< 代表依赖 并且 是一个个代表
makefile使用方式1:
1.写一个make文件
在这里插入图片描述
2. 直接make
在这里插入图片描述
3.一般会加上clean擦除
在这里插入图片描述
makefile使用方式2
在这里插入图片描述

4 g++

C++:
C语言的源程序文件 *.c 编译工具 gcc
C++语言的源程序文件 *.cpp 编译工具 g++
在这里插入图片描述

5 shell脚本

echo 输出
数学运算  expr 

在这里插入图片描述

*.sh     后缀一般为  .sh   但也不一定。为其它也可以

在这里插入图片描述

shell脚本的参数
$1 $2 $3 $4 ....     argv
命令行的第n个参数

$# 命令行参数个数     argc - 1 
$* 所有的命令行参数

在这里插入图片描述
在这里插入图片描述

shell脚本数学运算
	let "x+=10"

	expr $n + $m

	((y=$x+$m))


	y=`expr $n + $m`
	y=$(expr $n + $m)

在这里插入图片描述
下面单引号那里为什么没有运算成功呢?
在这里插入图片描述
其实不是单引号是左上角,esc键下面那个 ` 符号
在这里插入图片描述

判定语句:
	if test 。。。。
	then
	else
	fi

在这里插入图片描述
左边语法没有错,右边确报错了。这是什么原因呢?

用vi打开试一试
在这里插入图片描述
在这里插入图片描述
一样的错误。
换个目录来。发现可以
在这里插入图片描述
那么推测可能是因为共享文件夹的原因。(这里我也不确定)

循环语句:
	for((i=0;i<10;i++))
	do

	done

	for a in {1 2 3 4 5 6}
	do

	done

	while循环 until循环
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲折耳根的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值