繁体   English   中英

为什么即使在编译了我的 header 文件后,我仍然会收到 linker 错误?

[英]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.olex.o 要正确编译文件,您实际上应该执行以下操作:

gcc -c lex.c
gcc -c main.c
gcc main.o lex.o

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM