C Makefile链接错误:未定义的main

C Makefile链接错误:未定义的main,c,gcc,makefile,C,Gcc,Makefile,以另一种方式格式化,输出如下所示: making target gcc ./src/gif_display.o ./src/gif_lzw.o ./src/gif_read.o ./src/sysm.o ./src/x86_main.o -lm -lc -o gif 实际的编译行是: [joshis1@(none) GIF_Utility]$ make target echo "making target" making target gcc -lm -lc -o gif /usr/lib/

以另一种方式格式化,输出如下所示:

making target
gcc ./src/gif_display.o ./src/gif_lzw.o ./src/gif_read.o ./src/sysm.o ./src/x86_main.o -lm -lc -o gif 
实际的编译行是:

[joshis1@(none) GIF_Utility]$ make target
echo "making target"
making target
gcc -lm -lc -o gif
/usr/lib/gcc/i686-redhat-linux/4.6.3/../../../crt1.o: In function _start': (.text+0x18): undefined reference tomain' collect2: ld returned 1 exit status make: * [target] Error 1
[joshis1@(none) GIF_Utility]$
如您所见,没有输入文件提供给编译器,因此问题在于使用
patsubst
。如果将其替换为类似的内容,它将正确生成所需文件的列表:

gcc -lm -lc -o gif

您需要修复patsubst以更改目录:

$(patsubst %.c,%.o,$(wildcard ./src/*))

我想你需要先把它移到文件的末尾,把它放在文件的末尾不,这并不能解决问题。你能发布“make target”的输出吗?[joshis1@(none)GIF_实用工具]$make target echo“making target”making target gcc-lm-lc-o GIF/usr/lib/gcc/i686 redhat linux/4.6.3/../../../crt1.o:In function
\u start':(.text+0x18):对
main'collect2:ld的未定义引用返回了1个退出状态make:**[target]错误1[joshis1@(none)GIF_实用工具]$谢谢!,我试过了。现在它得到了以下问题。.o是在源文件夹中创建的。请不要这样编辑您的问题-如果您有其他问题,请提出新问题,否则您会使此答案看起来错误,因为它与原始问题无关
$(patsubst %.c,%.o,$(wildcard ./src/*))
$(patsubst ./src/%.c,./objs/%.o,$(wildcard ./src/*.c))