分页: 1 / 1

Makefile sample(已解决)

发表于 : 2011-09-25 11:13
chrwhy
刚学写Makefile, 自己尝试写一个, 可是编译出错, 代码如下

代码: 全选

test : a.o 
        gcc a.o -o test
a.o : a.c
gcc a.c -o a.o
clean : rm a.o
make的时候, 第二行

代码: 全选

gcc a.o -o test
有问题, 不太清楚是什么问题
麻烦各位给看看, 先谢过啦

Re: Makefile sample

发表于 : 2011-09-25 11:51
sunfish
gcc a.c -o a.o 不对,应该用gcc a.c -c a.o
也不知道你格式对不对

Re: Makefile sample

发表于 : 2011-09-25 15:01
cjxgm
sunfish 写了:gcc a.c -o a.o 不对,应该用gcc a.c -c a.o
也不知道你格式对不对
应该是 gcc -c -o a.o a.c

Re: Makefile sample

发表于 : 2011-09-25 15:13
sunfish
cjxgm 写了:
sunfish 写了:gcc a.c -o a.o 不对,应该用gcc a.c -c a.o
也不知道你格式对不对
应该是 gcc -c -o a.o a.c
不用的,-c选项默认生成同名目标文件,测过了

Re: Makefile sample

发表于 : 2011-09-25 19:25
chrwhy
谢谢楼上两位, 问题已经解决

Re: Makefile sample

发表于 : 2011-09-30 16:49
cjxgm
sunfish 写了:
cjxgm 写了:
sunfish 写了:gcc a.c -o a.o 不对,应该用gcc a.c -c a.o
也不知道你格式对不对
应该是 gcc -c -o a.o a.c
不用的,-c选项默认生成同名目标文件,测过了
[bash]cjxgm@clans /tmp$ gcc -o a.o a.c # a.c 是一个空文件
/usr/lib/gcc/i686-pc-linux-gnu/4.6.1/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld 返回 1
cjxgm@clans /tmp$ gcc -c -o a.o a.c
cjxgm@clans /tmp$ [/bash]
这意味着什么? :em06

Re: Makefile sample

发表于 : 2011-10-01 22:16
tusooa
-c 是生成object文件。make defaults叫做compile.c
不加-c是直接链接成可执行文件。叫link.c