我得到了一个目标文件set.o*
和头文件set.h
。我需要对我创建的文件main.c
中的函数进行测试。
all: main
main: main.c set.h set.o
clang -Wall -g main.c set.o -o main
clean:
rm main
这个Makefile
一直给我错误:
ld: warning: ignoring file set.o, building for macOS-x86_64 but attempting to link with file built for unknown-unsupported file format ( 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 )
Undefined symbols for architecture x86_64:
"_validateMemUse", referenced from:
_main in main-f6a155.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [main] Error 1
如果有人知道我哪里错了,回复我将非常感激:)
1条答案
按热度按时间pes8fvy91#
这个错误是相当清楚的,在这里由我把重要的陈述减到重点:
ld:警告:忽略文件set.o,正在为macOS-x86_64构建,但尝试链接为未知-不支持的文件格式构建的文件
显然,文件“set.o”是为另一个目标系统编译的,或者不是一个目标文件。在任何情况下,链接器都无法识别它,因此无法将您的“main. c”链接到它。
回到给你这个文件的人那里,要求为你的Mac提供一个对象文件,或者更好的是源文件。