Ошибка связи с Cocotron
Недавно я построил интерфейс платформы Linux для Cocotron и смог создать среду Foundation без ошибок.
Тем не менее, при связывании моего проекта target-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 ответа
Обновление: в репозитории 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 за информацию выше и за то, что отправили мне письмо по электронной почте.
Какой компилятор вы используете? Надеюсь, тот из Cococtron? Посмотрите на это обсуждение.
__gnu_objc_personality_v0
происходит, когда вы указываете неправильный компилятор (скажем, gcc для кода C++ без опции -x). Попробуйте настроить некоторые ключи, чтобы сообщить g ++, что вы хотите скомпилировать код Obj-C.