linux中使用gcc编译的简单指令和makefile编写的入门级规则


使用gcc进行编译链接
    #仅仅将源码编译成目标文件,不进行链接
    gcc -c hello.c
    #生成hello.o文件,不会生成可执行文件
    
    #加入编译优化
    gcc -O hello.c -c
    #生成hello.o文件,不会生成可执行文件
    
    #编译链接生成可执行文件
    gcc hello.c -lm -L/usr/bin -I/usr/include
    #生成可执行文件a.out
    #-lm 表示libm.so或libm.a 函数库文件
    #-L 后面接的是指定的函数库搜索路径
    #-I 后边接的是指定的include包含库搜索路径
    
    #将编译的结果输出为某个文件名
    gcc -o helloname hello.c
    #生成可执行文件helloname
    
    #输出更多编译过程中的信息
    gcc -o helloname hello.c -Wall
    #-Wall表示 输出详细的警告信息

makefile的一些基本语法规则
  target : 目标文件1 目标文件2 目标文件3 .....
  <tab>	gcc -o 希望建立的可执行文件名 目标文件1 目标文件2 目标文件3 .....
  • 例如:
  mian: main.o haha.o sin_value.o cos_value.o
          gcc -o main main.o haha.o sin_value.o cos_value.o -lm
  • 其中makefile文件中可以设定多个target
  mian: 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是第二个目标(名字可以自定义)
  clean:
          rm -f main main main.o haha.o sin_value.o cos_value.o
  • 在使用的时候通过make确定执行哪个目标
  make main #表示执行第一个目标main
  make clean #表示执行第二个目标clean
  make clean main #表示先执行main 再执行clean
  • 也可以使用变量${变量}$ (变量)
  #定义一个变量LIBS和OBJS
  LIBS = -lm
  OBJS = main.o haha.o sin_value.o cos_value.o
  #使用变量的方式 ${变量}或$(变量)
  #$@为特殊变量,表示当前目标,因此下文中的$@表示main
  mian: ${OBJS}
          gcc -o $@ ${OBJS} ${LIBS}
  clean:
          rm -f main ${OBJS}
  • 也可以在命令行中直接定义变量
  >> CFLAGS="-Wall" make clean main
  #执行之后,makefile中的CFALGS就会替换成 -Wall
  LIBS = -lm
  OBJS = main.o haha.o sin_value.o cos_value.o
  
  mian: ${OBJS}
          gcc -o $@ ${OBJS} ${LIBS} -${CFLAGS}
  clean:
          rm -f main ${OBJS}
  • 变量的优先级

​ ①命令行中添加的变量

​ ②makefile文件中定义的变量

​ ③shell环境中的变量


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

咖啡与乌龙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值