Ld error: symbols in framework not found. How to troubleshoot?
Ld error: symbols in framework not found. How to troubleshoot?
- Subject: Ld error: symbols in framework not found. How to troubleshoot?
- From: Jerry Krinock <email@hidden>
- Date: Mon, 10 Mar 2008 18:42:57 -0700
I'm trying to build a bundle that links against several frameworks.
It works fine for configuration Debug, but for configuration Release
it fails to find symbols in on of my frameworks, for both
architectures i386 and ppc. I get these same results when copying the
Ld command from the Build Transcript and running from the command
line. That is, if I change
-F/path/to/my/Builds/Release
to
-F/path/to/my/Builds/Debug
it works fine.
(The whole command is shown below [1]).
Now, the problem framework, SSAlert, does exist at both paths, so this
leads me to believe that the version of SSAlert.framework in the
Release path is defective in some way.
How can I troubleshoot this? Is there any command which will look for
the symbols in the same way that Ld does and give me more info?
I've tried otool, but don't see any problem. From my Builds directory
I've run:
otool -ov Release/SSAlert.framework/Versions/A/SSAlert
otool -ov Debug/SSAlert.framework/Versions/A/SSAlert
and in both cases I get 876 lines of output. The only differences are
(a) the values of the addresses and (b) the "Debug" otool output has -
[ClassName methodName] printed on the method_imp line, although I
believe this is insignificant. The "Release" one is stripped, but
I've seen this in working "stripped" frameworks before. The extra
text is redundant since the class and method names are printed
elsewhere. "Objective-C class and method names are never really
stripped."
The sizes of the two framework executables are Debug: 96.8 KB and
Release: 138.1 KB. I was thinking that Release should be double Debug
due to fattening i386+ppc, but I have other working framework sets
that also have less than 2:1 size ratio.
Thanks,
Jerry Krinock
[1] Here is the command that fails. (I've added some newlines to
make it readable.)
/Developer/usr/bin/gcc-4.0 -o /private/tmp/BmTiger.build/Release/
BmTiger.build/Objects-normal/i386/BmTiger
-L/Users/jk/Documents/Programming/Builds/Release
-F/Users/jk/Documents/Programming/Builds/Release <-- works if I
change to "Debug"
-F/Users/jk/Documents/Programming/Projects/Bookdog/BmTiger/../../../
Builds/Release
-F/Users/jk/Documents/Programming/Projects/Bookdog/BmTiger/../../../
Builds/Debug
-F/Users/jk/Documents/Programming/Projects/Bookdog/BmTiger/../../../
Builds/Debug
-F/Users/jk/Documents/Programming/Projects/Bookdog/BmTiger/../../../
Builds/Release
-F/Users/jk/Documents/Programming/Projects/Bookdog/BmTiger/../../../
Builds/Debug
-F/Users/jk/Documents/Programming/Projects/Bookdog/BmTiger/../../../
Builds/Release
-filelist /private/tmp/BmTiger.build/Release/BmTiger.build/Objects-
normal/i386/BmTiger.LinkFileList -framework Cocoa
-framework SSApp
-framework BmStuff
-framework SSSQLiter
-framework SSAlert
-arch i386
-bundle
-mmacosx-version-min=10.4
-bundle_loader /Users/jk/Documents/Programming/Builds/
ReleaseUnstripped/Bookdog.app/Contents/MacOS/Bookdog -isysroot /
Developer/SDKs/MacOSX10.4u.sdk
Bonus Question:
Why does Xcode generate the following lines in the command?
-F/Users/jk/Documents/Programming/Projects/Bookdog/BmTiger/../../../
Builds/Release
-F/Users/jk/Documents/Programming/Projects/Bookdog/BmTiger/../../../
Builds/Debug
-F/Users/jk/Documents/Programming/Projects/Bookdog/BmTiger/../../../
Builds/Debug
-F/Users/jk/Documents/Programming/Projects/Bookdog/BmTiger/../../../
Builds/Release
-F/Users/jk/Documents/Programming/Projects/Bookdog/BmTiger/../../../
Builds/Debug
-F/Users/jk/Documents/Programming/Projects/Bookdog/BmTiger/../../../
Builds/Release
If you factor out the /../../.., you get, repeated 3 times,
-F/Users/jk/Documents/Programming/Builds/Release
-F/Users/jk/Documents/Programming/Builds/Debug
one of those is the same as the first -F shown above in the complete
command. They are ignored since all frameworks are found in the first
-F option which precedes these.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden