【问题标题】:How can solve this compiling error?如何解决这个编译错误?
【发布时间】:2011-12-16 00:15:24
【问题描述】:

我正在制作一个使用 mongoose 源在 iOS 设备上运行 Web 服务器的应用程序。我运行 make 来制作必要的文件并将它们添加到项目中。它编译得很好,但是当它到达链接部分时,它会抛出以下错误:

ld: duplicate symbol _main in /Users/tyler/Library/Developer/Xcode/DerivedData/iServer-gnfryiiydesjxicyoqsybsqugulz/Build/Intermediates/iServer.build/Debug-iphonesimulator/iServer.build/Objects-normal/i386/main-111B0F2B16D0E565.o and /Users/tyler/Library/Developer/Xcode/DerivedData/iServer-gnfryiiydesjxicyoqsybsqugulz/Build/Intermediates/iServer.build/Debug-iphonesimulator/iServer.build/Objects-normal/i386/main-4AE49C4D6F0286C.o for architecture i386
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1

有什么建议吗?

【问题讨论】:

  • 这是链接错误,不是编译错误。
  • 抱歉,我是一名 Web 开发人员,终于开始使用 iOS 设备了,所以每当我点击运行时发生某些事情时,我倾向于认为它是编译错误。但是,考虑到它发生在链接阶段,我应该弄清楚这一点

标签: ios linker


【解决方案1】:

彻底检查您的项目文件,并确保您没有 2 个名为 main.m 的文件。删除不属于您实际项目的那个。

【讨论】:

  • 我只有一个 main.c 文件。我认为我的项目需要一个 main.m 文件?
  • 抱歉,忘记检查支持文件夹。我有一个 main.c 文件和一个 main.m 文件。这是导致错误的原因吗?
  • 编译器抱怨,因为它有重复的 main() 调用。您的项目需要它是原始的 main.m,其中包含唯一的 main() 方法。你必须有一个包含另一个主文件的附加库(或添加的项目)(在你的情况下你说main.c。如果这个 main.c 属于不同的项目,你应该删除它。
  • main.c 属于猫鼬源。如果我重命名它,你认为会解决它吗?
  • 不,因为 main 方法仍然存在。我会删除那个 main.c,因为您没有将 mongoose 编译为您的主要项目。
【解决方案2】:

不熟悉 mongoose,但项目通常有测试库的测试应用程序。这可能是被链接的额外main() 的来源。就像 WrightsCS 说的,它可能在 main.m 文件中,但如果没有,请搜索 main(

【讨论】:

    猜你喜欢
    • 2018-03-19
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 2014-06-11
    相关资源
    最近更新 更多