makefile 简单用例
发布时间:2020-12-15 07:15:00 所属栏目:安全 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #========命令==[简单示例根据实际修改添加 ]CC=gcc#c语言编译命令AR=ar#编译静态库命令LD=ld#编译动态库命令RM= rm -rf#强制删除命令,一般用于删除.
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 #========命令==[ 简单示例根据实际修改添加 ] CC = gcc #c语言编译命令 AR = ar #编译静态库命令 LD = ld #编译动态库命令 RM = rm -rf #强制删除命令,一般用于删除 .o 文件 #========参数(nameFLAGS) =================== #C语言编译器参数 CFLAGS = -g -Wall $(HFFLAGS) #编辑静态库参数 .a 静态库后缀 AFLAGS = -r #编辑动态库参数 .so 动态库后缀 SOFLAGS = -fPIC -shared #FH(head file)头文件路径参数 -I.(当前路径) 默认有:/usr/local/include/ 和 /usr/include/ HFFLAGS = -I. #LD(library dir)库路径参数 -L.(当前路径) 默认有:/usr/local/lib/ 和 /usr/lib/ LDFLAGS = -L. #LD(library name)库名称参数 -lNAME 等价搜索路径下的 libNAME.a 或 libNAME.so #非系统默认库必须指明使用那些库 如:libpthread.a Linux系统下的线程库 LMFLAGS = -lWorld -lpthread LDMFLAGS = $(LDFLAGS) $(LMFLAGS) #优化参数 OFLAGS = -O0 #========目标============================== #所有生产目标 all : libaray excute #编译成库的文件名 如:libWorld.so libaray : libWorld.so #编程成执行文件的文件名 如:hello excute : hello #========编译============================== #%o:%c 旧格式 .c.o: 所有的[.c]文件生成相应的[.o]文件。若生成目标是"a.o b.o",那么"%c"就是"a.c b.c"。 #[Tab]$(CC)则替换为前面赋值的内容,每个命令前面必定为Tab %o:%c $(CC) $(CFLAGS) -c $< #编译执行文件 hello :hello.o libWorld.so $(CC) $(LDMFLAGS) [email?protected] $? #编译动态库 libWorld.so:World.o $(CC) $(SOFLAGS) [email?protected] $? #可用make -f makefile.steel clear清除 clean: $(RM) *.o #======== 以下为解释,非makefile脚本 [email?protected]: 规则中的目标名(也就是规则名)。$<: 规则中的依赖项目,只代表规则所有依赖项目中的第一项!$^: 规则中所有的依赖项目。$?: 规则中时间新于目标的依赖项目 make -f makefile.linux clear调用clean make -f makefile.linux > log.txt 将编译过程的内容保存在log.txt中 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |