makefile, 实例详解

CC=gcc
CFLAGS= -Iinclude -Wall -g -DDEBUG
LDFLAGS=-L./lib -Wl,-rpath=./lib -Wl,-rpath=/usr/local/lib

myapp: main.o test1.o test2.o test3.o test4.o test5.o
$(CC) -o $@ $(LDFLAGS) $^ -ldl

clean:
rm -rf *.o myapp

请问:
1、“-Iinclude -Wall -g -DDEBUG”这句具体代表什么意思(能否帮忙解释一下各个参数含义)?
  变量CFLAGS在后面也没用到,这样赋值有什么用?
2、同样的,“-L./lib -Wl,-rpath=./lib -Wl,-rpath=/usr/local/lib”这句具体代表什么意思(能否帮忙解释一下各个参数含义)?
3、“-ldl”是什么意思?
4、“rm -rf *.o myapp”是指删除临时生成的所有.o文件吧?那么为何后面还加了myapp文件(难道要把生成的目标文件myapp也给删了)?
  参数-rf是什么意思?
5、“rm”是make的内置命令吗?make的全部内置命令哪里可以查看?
6、上面makefile里为何依赖文件只写了.o文件,而没有.c文件?

1、“-Iinclude -Wall -g -DDEBUG”这句具体代表什么意思(能否帮忙解释一下各个参数含义)? 
这些都是gcc的参数,I后面跟的是搜索路径,-Wall是所有错误跟警靠在编译的时候都打出来,-g是生成带符号表的可执行程序,以供你用gdb去调试, -D是定义一个宏,相当于你程序里面的一个编译开关
2、LDFLAGS指示了一些链接时的设定,-L反指定链接库的位置, -rpath是指定运行时的动态库位置,
3、-ldl则指示装配程序ld需要装载dl函数库。
4、是的。-rf是rm的参数意为强制剃归删除,具体你可以man rm
5、rm是linux系统命令,只要你使用的shell可以执行该命令,make中就可以使用该命令
6、根据隐晦规则,make会自动根据你的.o文件来推导相应的.c文件并执行相应的命令来生成.o文件
.是指当前目录
./lib指的是当前目录下的lib目录
更多:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值