免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2442 | 回复: 3
打印 上一主题 下一主题

哪位大佬来看一个Makefile中的选项 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-31 23:02 |只看该作者 |倒序浏览
软件是iptables 1.4.5的extensions/GNUmakefile.in:

  1. AM_DEPFLAGS     = -Wp,-MMD,$(@D)/.$(@F).d,-MT,$@
复制代码


  1. init%.o: init%.c
  2.         ${CC} ${AM_DEPFLAGS} ${AM_CFLAGS} -D_INIT=$*_init ${CFLAGS} -o $@ -c $<;
复制代码


我知道-Wp是把后面的几个逗号分隔的参数传给Preprocessor,@的几个是用文件名和路径替换,但整体上还是有点儿糊涂。

这所以对这个有兴趣是因为我用的交叉编译器加上这个编译就会失败,而且出错的信息有点奇怪,下面是单个文件手工编译时的信息:

  1. tile-gcc -Wp,-MMD,./.initext4.o.d,-MT,initext4.o -D_LARGEFILE_SOURCE=1 -D_LARGE_FILES -D_FILE_OFFSET_BITS=64         -D_REENTRANT -Wall -Waggregate-return -Wmissing-declarations    -Wmissing-prototypes -Wredundant-decls -Wshadow -Wstrict-prototypes    -Winline -pipe  -DXTABLES_LIBDIR=\"/home/Cyberman/iptables-1.4.5/x86_64_build/libexec/xtables\" -DXTABLES_INTERNAL -I../include -I../include  -D_INIT=ext4_init -g -O2 -o initext4.o -c initext4.c;
  2. Warning: Unrecognized option ( ) in "-MT"
  3. tile-cc: ignoring unknown warning option -Waggregate-return
  4. tile-cc: ignoring unknown warning option -Wredundant-decls
  5. tile-cc: ignoring unknown warning option -Winline
  6. "initext4.c": Error: Can't open intermediate compiler file (/tmp/ctmB.6HstQU): Invalid argument
复制代码


当然我们的编译器只是模仿了GCC的选项,不是直接用GCC实现的,所以有这种差异也很正常。目前我是直接去掉这个完成编译的,但真正要用还是需要正解原来的Makefile中为什么使用这个,如去掉了会不会导致头文件修改之后不重新编译等。

论坛徽章:
0
2 [报告]
发表于 2009-11-05 16:27 |只看该作者
-MT是表示在生成.d文件的时候使用你指定的字符串作为目标,而不是默认的将.c换成.o

论坛徽章:
0
3 [报告]
发表于 2009-11-05 20:45 |只看该作者
原帖由 lllaaa 于 2009-11-5 16:27 发表
-MT是表示在生成.d文件的时候使用你指定的字符串作为目标,而不是默认的将.c换成.o


单纯的一个-MT我还大概知道,但这几个连在一起我看得有点糊涂了。我现在最关心的是这个去掉有多大影响,因为我的编译器虽然支持GCC选项,但不是100%兼容的,加上这个就出错。如果只是依赖视别,那大不了每次干脆clean了重编,反正软件不大,我的4核工作站用-j 4编译它还是很快的。

论坛徽章:
0
4 [报告]
发表于 2009-11-06 09:00 |只看该作者
那可以看看生成的.d文件。如果目标和依赖没错就没问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP