【问题标题】:Link error with Cocotron与 Cocotron 的链接错误
【发布时间】:2009-03-24 15:17:11
【问题描述】:

我最近为 Cocotron 构建了一个 linux 平台接口,并且能够毫无错误地构建 Foundation 框架。

但是,在链接我的 Objective-C 项目时,我收到了链接器错误:

/Developer/Cocotron/1.0/Linux/i386/Frameworks/Foundation.framework//libFoundation.so:未定义引用`__gnu_objc_personality_v0'

我做了一些谷歌搜索,但没有发现任何有用的东西。

这是我的 ld 命令行(为了便于阅读,做了一点简化):

Ld /Users/me/MyProject/build/Linux/Release/ENCLAnalyzer normal i386
    cd /Users/me/MyProject
    /Developer/Cocotron/1.0/Linux/i386/gcc-4.3.1/bin/i386-ubuntu-linux-gcc -arch i386 
    -L/Users/me/MyProject/build/Linux/Release 
    -L../../frameworks/Shared/FFmpeg/Linux/lib 
    -L/Developer/Cocotron/1.0/PlatformInterfaces/i386-ubuntu-linux/lib 
    -L/Developer/Cocotron/1.0/PlatformInterfaces/i386-ubuntu-linux/intel/mkl/9.0/lib/32 
    -L/Developer/Cocotron/1.0/PlatformInterfaces/i386-ubuntu-linux/intel/ipp/5.1/ia32/sharedlib
    -L/Users/me/frameworks/Shared/FFmpeg/Linux/lib 

    -F/Users/me/MyProject/build/Linux/Release 
    -F/Users/me/frameworks/Shared 
    -F/Developer/Cocotron/1.0/Linux/i386/Frameworks 
    -F/Users/me/frameworks/OtherProject/Linux 

    -filelist "/Users/me/MyProject/build/Linux/MyProject.build/Release/MyProject Linux.build/Objects-normal/i386/MyProject.LinkFileList" 

    -Wl,-rpath-link,/Developer/Cocotron/1.0/PlatformInterfaces/i386-ubuntu-linux/lib 
    -Wl,-rpath-link,../../frameworks/Shared/FFmpeg/Linux/lib 
    -Wl,-rpath-link,/Developer/Cocotron/1.0/PlatformInterfaces/i386-ubuntu-linux/intel/ipp/5.1/ia32/sharedlib
    -Wl,-rpath-link,/Developer/Cocotron/1.0/PlatformInterfaces/i386-ubuntu-linux/intel/mkl/9.0/lib/32
    -Wl,-rpath-link,/Developer/Cocotron/1.0/Linux/i386/Frameworks/Foundation.framework 

    -framework Foundation -framework MyFramework1 -framework MyFramework2 -framework MyFramework3 
    -o /Users/me/MyProject/build/Linux/Release/MyProject

我有一种感觉,基础项目需要链接到它不是的库,或者它可能链接到某个库的错误版本。但我不确定。

任何帮助将不胜感激。

【问题讨论】:

    标签: objective-c linux macos cross-platform cocotron


    【解决方案1】:

    您使用的是哪个编译器?我希望是来自 Cococtron 的那个?看看this的讨论。

    __gnu_objc_personality_v0 发生在您指定了不正确的编译器时(比如没有 -x 选项的 C++ 代码的 gcc)。尝试设置一些开关来告诉 g++ 你要编译 Obj-C 代码。

    【讨论】:

    • 谢谢——我正在使用 Cocotron 编译器。
    【解决方案2】:

    更新:Cocotron 存储库中有一些编译器更新修复了 这个问题。安装脚本已更新以获取这些和新的 版本在这里:

    http://cocotron.org/Tools/Downloads/InstallCDT-2009-04-17.zip

    在使用这个之前,一定要删除 /Developer/Cocotron/1.0/Downloads/gcc-4.3.1.tar.bz2 否则不会选择 上新的来源。请务必在重新安装时指定 Linux i386。

    sudo ./install.sh Linux i386

    感谢Christopher Lloyd 提供上述信息,并通过电子邮件向我发送修复程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多