iOS 4.1 SDK - дублирующиеся символы в множественной статической библиотеке, связывающей сборки устройств - PullRequest
3 голосов
/ 23 сентября 2010

Моя компания создает приложение для iPhone с SDK 4.1.

Для этого у нас есть 3 уровня зависимости проекта, наше основное приложение «CSM» связывается с нашим SDK с именем «csm-sdk» (в libsrc_csmsdk.a), csm-sdk затем связывается с нашей библиотекой XMLRPC («libXMLRPC»). а ").

При компиляции csm-sdk для устройства он включает определения для всех классов ObjC и функции C для библиотеки XMLRPC дважды.

Затем, когда CSM связывается, он сообщает о дублирующихся объектах в том же файле библиотеки.

Мы связываем на всех уровнях с -all_load и -ObjC.

У меня есть другой проект, который делает что-то похожее на SDK 3.2, и все работает нормально ... И этот проект на 4.1, как сборка симулятора, все работает нормально, только устройство не работает. Кто-нибудь сталкивался с чем-то подобным?

Подробнее см. Ниже.

Спасибо!

Гленн Р. Мартин

Ошибка сборки:

ld: duplicate symbol _OBJC_METACLASS_$_XMLParser in /Users/builder/cc/workingdirs/iphoneclient/csm-sdk/build/Release-iphoneos/libsrc_csmsdk.a(XMLParser.o) and /Users/builder/cc/workingdirs/iphoneclient/csm-sdk/build/Release-iphoneos/libsrc_csmsdk.a(XMLParser.o)
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1
ProcessProductPackaging "/Users/builder/Library/MobileDevice/Provisioning Profiles/6EB9AEE7-A844-4017-B076-06C3240F869B.mobileprovision" "build/Release-iphoneos/CSM.app/embedded.mobileprovision"
    cd /Users/builder/cc/workingdirs/iphoneclient
    setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"
    <com.apple.tools.product-pkg-utility> "/Users/builder/Library/MobileDevice/Provisioning Profiles/6EB9AEE7-A844-4017-B076-06C3240F869B.mobileprovision" -o "/Users/builder/cc/workingdirs/iphoneclient/build/Release-iphoneos/CSM.app/embedded.mobileprovision"

ProcessProductPackaging dist.plist "build/CSM.build/Release-iphoneos/CSM.build/CSM.xcent"
    cd /Users/builder/cc/workingdirs/iphoneclient
    setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"
    <com.apple.tools.product-pkg-utility> /Users/builder/cc/workingdirs/iphoneclient/dist.plist -entitlements -format xml -o "/Users/builder/cc/workingdirs/iphoneclient/build/CSM.build/Release-iphoneos/CSM.build/CSM.xcent"

** BUILD FAILED **


The following build commands failed:
CSM:
   Ld "/Users/builder/cc/workingdirs/iphoneclient/build/CSM.build/Release-iphoneos/CSM.build/Objects-normal/armv6/CSM" normal armv6
   Ld "/Users/builder/cc/workingdirs/iphoneclient/build/CSM.build/Release-iphoneos/CSM.build/Objects-normal/armv7/CSM" normal armv7
(2 failures)

Release BUILD failed

otool сброс устройства:

Archive : csm-sdk/build/Release-iphoneos/libsrc_csmsdk.a (architecture armv7)
Table of contents from: csm-sdk/build/Release-iphoneos/libsrc_csmsdk.a(__.SYMDEF) (for architecture armv7)
size of ranlib structures: 1960 (number 245)
size of strings: 6256

object           symbol name
XMLParser.o   _OBJC_CLASS_$_XMLParser
XMLParser.o   _OBJC_METACLASS_$_XMLParser
XMLParser.o   .objc_class_name_XMLParser
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._asynchronousData
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._methodName
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._asynchronousConnection
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._asynchronous
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._asyncRequestInProgress
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._queueRequests
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._requestTimeout
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._serviceUrl
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._cachingPolicy
XMLRPC.o      _OBJC_METACLASS_$_XMLRPC
XMLRPC.o      .objc_class_name_XMLRPC
XMLRPC.o      _OBJC_CLASS_$_XMLRPC

... Clipped for Brevity ...

CSMWebservice.o l_OBJC_LABEL_PROTOCOL_$_NSObject
CSMWebservice.o l_OBJC_LABEL_PROTOCOL_$_XMLRPCDelegate
XMLParser.o   _OBJC_METACLASS_$_XMLParser
XMLParser.o   .objc_class_name_XMLParser
XMLParser.o   _OBJC_CLASS_$_XMLParser
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._methodName
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._asynchronousConnection
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._delegate
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._serviceUrl
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._queueRequests
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._requestTimeout
XMLRPC.o      _OBJC_IVAR_$_XMLRPC._asynchronousError
XMLRPC.o      .objc_class_name_XMLRPC
XMLRPC.o      _OBJC_CLASS_$_XMLRPC

otool дамп симулятора:

Archive : csm-sdk/build/Release-iphonesimulator/libsrc_csmsdk.a
Table of contents from: csm-sdk/build/Release-iphonesimulator/libsrc_csmsdk.a(__.SYMDEF)
size of ranlib structures: 1520 (number 190)
size of strings: 5080

object           symbol name
CSMWebservice.o _OBJC_METACLASS_$_CSMWebservice
CSMWebservice.o _OBJC_CLASS_$_CSMWebservice
CSMWebservice.o l_OBJC_LABEL_PROTOCOL_$_NSObject
XMLParser.o   _OBJC_CLASS_$_XMLParser
XMLParser.o   _OBJC_METACLASS_$_XMLParser
XMLParser.o   .objc_class_name_XMLParser
... No duplication, clipped for brevity ...

Ответы [ 2 ]

0 голосов
/ 13 ноября 2010

Это была известная ошибка в 4.1, на самом деле, когда я перечислил ее на rdar, она была указана как дубликат. Мне сообщили, что это было недавно исправлено, просто надеюсь, что исправление выйдет в следующей версии.

0 голосов
/ 28 сентября 2010

Вы должны связать все в своей конечной цели развертывания приложения, а не отдельные подзадачи.

...