链接c项目时,体系结构x86_64的未定义符号

时间:2013-09-03 19:52:34

标签: c xcode compiler-construction linker

我尝试将picoc项目编译成xcode。没有外部库,只是我在命令行工具C项目中导入的.c和.h文件。

所有.c文件编译没有问题,但是当XCode链接时,我收到以下消息:

    Undefined symbols for architecture x86_64:
  "_BasicIOInit", referenced from:
      _PicocInitialise in platform.o
  "_CStdOut", referenced from:
      _PrintSourceTextErrorLine in platform.o
      _PlatformVPrintf in platform.o
  "_MathFunctions", referenced from:
      _IncludeInit in include.o
  "_MathSetupFunc", referenced from:
      _IncludeInit in include.o
  "_PicocPlatformScanFile", referenced from:
      _IncludeFile in include.o
  ...

给出错误的命令如下:

  

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -v -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer /SDKs/MacOSX10.8.sdk -L / Users / laurent / Library / Developer / Xcode / DerivedData / Pico-dhfwbamkhiyphjcwuncbwjsyjlax / Build / Products / Debug -F / Users / laurent / Library / Developer / Xcode / DerivedData / Pico-dhfwbamkhiyphjcwuncbwjsyjlax / Build / Products / Debug -filelist /Users/laurent/Library/Developer/Xcode/DerivedData/Pico-dhfwbamkhiyphjcwuncbwjsyjlax/Build/Intermediates/Pico.build/Debug/Pico.build/Objects-normal/x86_64/Pico.LinkFileList -mmacosx -version-min = 10.8 -o / Users / laurent / Library / Developer / Xcode / DerivedData / Pico-dhfwbamkhiyphjcwuncbwjsyjlax / Build / Products / Debug / Pico

Pico.LinkFileList文件正确包含所有必需的.o文件列表。

由于所有未完成的函数都在正确编译的.c文件中(并编译为.o),我应该怎么做才能避免这些错误? 感谢。

3 个答案:

答案 0 :(得分:1)

这些符号位于clibrary.c;你必须从要编译的源文件列表中遗漏它。

您的下一个问题无疑是关于将可执行文件链接到的库,并解决我建议您查看Makefile

答案 1 :(得分:1)

在相同的情况下,将Pico添加到Target Dependencies列表对我有用。 (来自Pico我的意思是我们创建库的xcode项目文件夹)

参考: 的 https://github.com/bulldog2011/pico

答案 2 :(得分:0)

如果它可以帮助某人,我发现一些#ifdef命令排除了要编译的函数。