Makefile:40: target 'cJSON.O' doesn't match the target pattern gcc -Wp,-MD,.cJSON.O.d -c -o cJSON.O gcc: fatal error: no input files compilation terminated. Makefile:41: recipe for target 'cJSON.O' failed make: *** [cJSON.O] Error 1
时间: 2024-02-01 09:15:24 浏览: 169
这个错误提示是因为在Makefile中的编译命令中没有指定要编译的源文件名。请检查Makefile文件中的编译命令是否正确,是否包含了需要编译的源文件名。例如,如果要编译cJSON.c文件,Makefile中的编译命令应该类似于:
```
cJSON.O: cJSON.c
gcc -Wp,-MD,.cJSON.O.d -c -o cJSON.O cJSON.c
```
其中,第一行指定了目标文件cJSON.O的依赖文件是cJSON.c,第二行是具体的编译命令,包含了源文件名和目标文件名。您可以根据实际情况进行修改。
相关问题
gcc -Wp,-MD,.cJSON.o.d -I ../include/ -c cJSON.c -o cJSON.o gcc -Wp,-MD,.main.o.d -I ../include/ -c main.c -o main.o gcc -o test cJSON.o main.o -lm -lpthread -l paho-mqtt3c -L ../lib main.o: In function `msgarrvd': main.c:(.text+0x16f): undefined reference to `msg_queue_send' main.c:(.text+0x1c5): undefined reference to `msg_queue_send' main.o: In function `tcpudp': main.c:(.text+0x72f): undefined reference to `msg_queue_send' main.o: In function `main': main.c:(.text+0x1f70): undefined reference to `shm_init' main.c:(.text+0x1f99): undefined reference to `shm_getaddr' collect2: error: ld returned 1 exit status Makefile:21: recipe for target 'test' failed make: *** [test] Error 1
根据你提供的信息,这是一个编译错误,其中包含对未定义的函数的引用。可能的原因是未正确链接所需的库或未正确包含头文件。你需要检查Makefile文件,确保正确链接和包含所需的库和头文件。例如,在此错误中,未定义的函数可能是msg_queue_send、shm_init和shm_getaddr。你需要确保正确链接和包含与这些函数相关的库和头文件。
gcc -o test shmem.o msg_queue_peer.o cJSON.o -lm -lpthread -l paho-mqtt3c -L ../lib /usr/lib/gcc/i686-linux-gnu/5/../../../i386-linux-gnu/crt1.o: In function `_start': (.text+0x18): undefined reference to `main' collect2: error: ld returned 1 exit status Makefile:28: recipe for target 'test' failed make: *** [test] Error 1
这个错误是由于编译器找不到 `main` 函数引起的。您的代码中可能缺少 `main` 函数,或者您的编译选项不正确。请检查您的代码,并确保它具有正确的 `main` 函数。如果您的代码中已经有 `main` 函数,请确保您的编译选项正确设置。例如,如果您正在构建一个库,请使用 `-shared` 选项,而不是 `-c` 选项。
阅读全文