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文件
这些都是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目录
./lib指的是当前目录下的lib目录
更多: