![](/img/trans.png)
[英]Why do I get the error "file format not recognized; treating as linker script" when compiling my Unix copy program?
[英]Why do I keep getting a linker error even after compiling my header file?
编译时总是出现这个错误!
Undefined symbols for architecture x86_64:
"_lex", referenced from:
_main in main-7a45f7.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我正在编译一个文件main.c
。 这是程序的前几行:
#include <stdio.h>
#include "lex.h"
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
我认为编译 header 文件"lex.h"
可能是问题所在,但我显然错了。 我运行了命令
gcc -c lex.c lex.o
并收到以下警告(但没有错误):
clang: warning: lex.o: 'linker' input unused [-Wunused-command-line-argument]
我想我已经包含了所有需要的信息,但这些是我当前目录中的文件(根据ls
):
lex.c lex.h lex.o main.c
任何帮助将不胜感激,谢谢!
感谢Tom Karzes和板垣文彦的帮助。 我的编译中的致命缺陷是没有链接main.o
和lex.o
。 要正确编译文件,您实际上应该执行以下操作:
gcc -c lex.c
gcc -c main.c
gcc main.o lex.o
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.