2009-03-24 9 views
1

Ich habe vor kurzem ein Linux-Plattform-Interface für Cocotron gebaut, und war in der Lage, das Foundation-Framework ohne Fehler zu bauen.Link Fehler mit Cocotron

Wenn jedoch mein Ziel-C-Projekt verknüpfen, erhalte ich einen Linker-Fehler:

/Developer/Cocotron/1.0/Linux/i386/Frameworks/Foundation.framework//libFoundation.so: undefined reference to ` __gnu_objc_personality_v0 '

Ich habe ein wenig gegoogelt, aber nichts so hilfreich gefunden.

Hier ist meine ld Befehlszeile (ein Bit für die Lesbarkeit vereinfacht):

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 

ich das Gefühl, dass das Projekt der Stiftung in eine Bibliothek verknüpfen muss, die es nicht ist, oder dass es vielleicht ist die Verknüpfung zur falschen Version einer Bibliothek. Aber ich bin mir nicht sicher.

Jede Hilfe würde sehr geschätzt werden.

Antwort

1

Update: Es gab einige Compiler-Updates im Cocotron-Repository, die dieses Problem beheben. Die das Installationsskript wurde aktualisiert, diese aufzuheben und die neue Version ist hier:

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

Vor diesem verwenden, müssen Sie /Developer/Cocotron/1.0/Downloads/gcc-4.3 löschen. 1.tar.bz2 oder es wird die neue Quelle nicht auswählen. Stellen Sie sicher, dass Linux i386 bei der Neuinstallation angegeben wird.

heißt sudo ./install.sh Linux i386

Dank Christopher Lloyd für die Informationen über und für mich das Update per E-Mail.

1

Welchen Compiler benutzen Sie? Der von Cococtron, hoffe ich? Werfen Sie einen Blick auf this Diskussion.

Die __gnu_objc_personality_v0 tritt auf, wenn Sie den falschen Compiler angeben (sagen gcc für C++ - Code ohne die Option-X). Versuchen Sie, einige Schalter einzurichten, um g ++ mitzuteilen, dass Sie Obj-C-Code kompilieren möchten.

+0

Danke - Ich verwende den Cocotron-Compiler. –