【问题标题】:How to fix " Undefined symbols for architecture x86_64 " in C?如何在 C 中修复“架构 x86_64 的未定义符号”?
【发布时间】:2019-11-13 15:15:58
【问题描述】:

我有一个包含在主文件中的头文件,但是当我编译主文件时,我有一个错误提示链接器失败。

我试图找到目标文件,但我找不到它们。 我认为问题可能来自我的机器。我是初学者,所以我不知道如何解决这个问题

当我尝试编译我的代码时,我得到了这个错误:

Undefined symbols for architecture x86_64:
"_intClassic", referenced from:
      _main in main-53b7e4.o
  "_intQuadrature", referenced from:
      _main in main-53b7e4.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

@zwol @JonathanLeffer 我的项目中有 3 个文件 main.c, integral.hintegral.cintegral.c 包含函数的代码 intClassicintQuadrature 允许我计算不同的 积分类型。在integral.h 我声明了函数和 我使用的结构。最后,我主要包括 integral.h 。 还有$ gcc -o output file1.o file2.o这个命令可以帮助我吗?

【问题讨论】:

  • 此错误消息有很多额外的文字可能会让您感到困惑。唯一重要的位是undefined symbol: _intClassicundefined symbol: _intQuadrature。您需要找到名为_intClassic_intQuadrature 的函数或数据对象的定义。 (由于过于复杂而无法进入此处,他们的名字实际上可能是 intClassicintQuadrature。)为了进一步帮助您,我需要更多地了解您正在尝试编译的软件.
  • @zwol @JonathanLeffer 我的项目 main.c、integral.h 和 integral.c 中有 3 个文件。积分.c 包含函数intClassicintQuadrature 的代码,它们允许我计算不同类型的积分。在integral.h 中我声明了我使用的函数和结构。最后,我主要包括了 integral.h 。还有$ gcc -o output file1.o file2.o这个命令可以帮助我吗?
  • 好吧,告诉我们你在报告错误时使用的命令。那么我们也许可以更好地帮助您。
  • gcc *.c 可能会起作用。
  • @Yunnosch(理想的情况是 SE 系统为我们提供一种回答重复的方式通过解释链接的问答如何回答问题 i>,因为这是初学者不一定能自己克服的障碍。但这需要 SE 组织承认它存在问题。空洞、苦涩的笑声)跨度>

标签: c linker linker-errors


【解决方案1】:

在与你的文件相同的目录中,尝试运行命令

gcc main.c integral.c -o integral

这应该把这两个文件编译成一个名为./integral的程序

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    相关资源
    最近更新 更多