Linux 下gcc,make的使用

1.gcc的简易用法:

# 仅将原始码编译成为目标档,并不制作连结等功能:
gcc -c hello.c
# 会自动的产生 hello.o 这个文件,但是并不会产生 binary 运行档。

# 在编译的时候,依据作业环境给予最佳化运行速度
gcc -O hello.c -c
# 会自动的产生 hello.o 这个文件,并且进行最佳化喔!

# 在进行 binary file 制作时,将连结的函式库与相关的路径填入
gcc sin.c -lm -L/usr/lib -I/usr/include
# 这个命令较常下达在最终连结成 binary file 的时候,
# -lm 指的是 libm.so 或 libm.a 这个函式库文件;
# -L 后面接的路径是刚刚上面那个函式库的搜寻目录;
# -I 后面接的是原始码内的 include 文件之所在目录。

# 将编译的结果输出成某个特定档名
gcc -o hello hello.c
# -o 后面接的是要输出的 binary file 档名

# 在编译的时候,输出较多的信息说明
gcc -o hello hello.c -Wall
# 加入 -Wall 之后,程序的编译会变的较为严谨一点,
# 所以警告信息也会显示出来!


2.makefile 的编写规则:

标的(target): 目标档1 目标档2
<tab>   gcc -o 欲创建的运行档 目标档1 目标档2
  • 在 makefile 当中的 # 代表注解;
  • <tab> 需要在命令行 (例如 gcc 这个编译器命令) 的第一个字节;
  • 标的 (target) 与相依文件(就是目标档)之间需以『:』隔开。
如果我想要有两个以上的运行动作时,例如下达一个命令就直接清除掉所有的目标档与运行档,该如何制作呢?
# 1. 先编辑 makefile 来创建新的守则,此守则的标的名称为 clean :
[...]# vi makefile
main: main.o haha.o sin_value.o cos_value.o
	gcc -o main main.o haha.o sin_value.o cos_value.o -lm
clean:
	rm -f main main.o haha.o sin_value.o cos_value.o

# 2. 以新的标的 (clean) 测试看看运行 make 的结果:
[...]# make clean  <==就是这里!透过 make 以 clean 为标的
rm -rf main main.o haha.o sin_value.o cos_value.o
如果想要先清除目标档再编译 main 这个程序的话,就可以这样输入:make clean main

我们可以再藉由 shellscript 那时学到的『变量』来更简化 makefile

[...]# vi makefile
LIBS = -lm
OBJS = main.o haha.o sin_value.o cos_value.o
main: ${OBJS}
        gcc -o main ${OBJS} ${LIBS}
clean:
        rm -f main ${OBJS}

bash shell script 的语法有点不太相同,变量的基本语法为:

  1. 变量与变量内容以『=』隔开,同时两边可以具有空格;
  2. 变量左边不可以有 <tab> ,例如上面范例的第一行 LIBS 左边不可以是 <tab>;
  3. 变量与变量内容在『=』两边不能具有『:』;
  4. 在习惯上,变量最好是以『大写字母』为主;
  5. 运用变量时,以 ${变量} 或 $(变量) 使用;
  6. 在该 shell 的环境变量是可以被套用的,例如提到的 CFLAGS 这个变量!
  7. 在命令列模式也可以给予变量。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值