与Cocotron链接错误

时间:2009-03-24 15:17:12

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

我最近为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

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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

更新: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获取上述信息,并通过电子邮件向我发送修复程序。