对 linux C 编程 makefile书写的疑问(二)

feilongzafei 2011-02-13 02:56:12
CC=gcc
CFLAGS=-Wall -g -DDEBUG
LDFLAGS=
LIBS=

all: 1-1

1-1: 1-1.c
$(CC) -o $@ $(LDFLAGS) $^ $(LIBS)
clean:
rm -rf *.o

知道LDFLAGS,LIBS都是作为参数用的,可是 (CC) -o $@ $(LDFLAGS) $^ $(LIBS)这样的参数顺序有些不明白,

这样的参数顺序写:(CC) -o $(LIBS) $(LDFLAGS) $@ $^ 不对吗,求高手帮解释一下?
...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qprevf 2011-02-17
  • 打赏
  • 举报
回复
:(CC) $(LIBS) $(LDFLAGS) -o $@ $^
这两个得在一块
井朝天 2011-02-15
  • 打赏
  • 举报
回复

一般你的
LIB = -lpthread
之类的,还有个 '-'号的。
justkk 2011-02-14
  • 打赏
  • 举报
回复
(CC) -o $(LIBS) $(LDFLAGS) $@ $^

这样肯定不对,-o选项后面跟编译生成的目标文件
feilongzafei 2011-02-13
  • 打赏
  • 举报
回复
顶起来,求继续解释。
feilongzafei 2011-02-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 feiyinzilgd 的回复:]
$@自动变量表示的是目标文件名称

$^自动变量表示所有的依赖文件名

gcc的-o 就只制定输出目标文件名称

抛开这个makefile。

编译程序的时候 gcc -o out out.c产生的可执行文件名称是 out
[/Quote]
谢谢您,我是对$(LIBS) $(LDFLAGS)这两个变量的位置有些疑惑。
谭海燕 2011-02-13
  • 打赏
  • 举报
回复
$@自动变量表示的是目标文件名称

$^自动变量表示所有的依赖文件名

gcc的-o 就只制定输出目标文件名称

抛开这个makefile。

编译程序的时候 gcc -o out out.c产生的可执行文件名称是 out
跟我一起写 Makefile (PDF 重制版) 作者: 陈皓 2020 年 05 月 24 日 目录 1 概述 1 1.1 关于程序的编译和链接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 makefile 介绍 3 2.1 makefile 的规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 一个示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 make 是如何工作的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.4 makefile 中使用变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.5 让 make 自动推导 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.6 另类风格的 makefiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.7 清空目标文件的规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.8 Makefile 里有什么? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.9 Makefile 的文件名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.10 引用其它的 Makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.11 环境变量 MAKEFILES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.12 make 的工作方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3 书写规则 13 3.1 规则举例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2 规则的语法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3 在规则中使用通配符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.4 文件搜寻 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.5 伪目标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.6 多目标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.7 静态模式 . . . . . . . . . . . . . .

23,129

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧