Re: The missing link
Re: The missing link
- Subject: Re: The missing link
- From: Philip Aker <email@hidden>
- Date: Wed, 08 Nov 2006 04:11:46 -0800
Hi Kenny,
I think all may not be lost. Quite some time ago Jim Ingham
recommended I look at <x-man-page://dyld> for my situation. It
certainly worked for me when I set a few dyld env variables.
On 2006-11-07, at 19:22:48, Kenny Leung wrote:
Unfortunately, the framework is a binary from a third party. I have
tried using install_name_tool, like so:
install_name_tool -change '@executable_path/Eve3.framework/Versions/
A/Eve3' '/blah/Eve3.framework/Versions/A/Eve3' Eve3
but it seems to have no effect.
From the man page:
!> For this tool to work when the install names are larger the binary
should be built with the ld(1) −headerpad_max_install_names option.
It's also a mystery why creating an application that links against
this framework in /Library/Frameworks works properly.
Probably because of the fallback paths.
Philip
On Nov 7, 2006, at 6:25 PM, Philip Aker wrote:
On 2006-11-07, at 16:39:35, Kenny Leung wrote:
Hi All.
I'm having linking issues, and I must say that the linking of
frameworks on MacOSX continues to be a mystery to me.
I am working on an application with embedded frameworks (well,
multiple embedded frameworks). That all works properly, so I
think I'm doing everything right there. The problem comes in when
I try to use a third party framework from one of my frameworks.
My framework builds fine, but when the application builds, I get
this error:
ld: warning can't open dynamic library: @executable_path/
Eve3.framework/Versions/A/Eve3 referenced from:
I think the first part should look something like:
@executable_path/../Frameworks/
It's in the XCode documentation.
/Users/kenny/build/SYMROOT/Debug/QCPrivate.framework/QCPrivate
(checking for undefined symbols may be affected) (No such file or
directory, errno = 2)
ld: Undefined symbols:
_RBEFINDFIRST referenced from QCPrivate expected to be defined in
@executable_path/Eve3.framework/Versions/A/Eve3
_RBEHANDLE referenced from QCPrivate expected to be defined in
@executable_path/Eve3.framework/Versions/A/Eve3
/usr/bin/libtool: internal link edit command failed
I also included the framework into the application, but the
result is the same.
I have the framework installed in /Library/Frameworks, even
though otool shows that its install location is:
kenny@alumintel>otool -L Eve3
Eve3:
@executable_path/Eve3.framework/Versions/A/Eve3
(compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/CoreServices.framework/
Versions/A/CoreServices (compatibility version 1.0.0, current
version 18.0.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/
IOKit (compatibility version 1.0.0, current version 275.0.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0,
current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0,
current version 88.1.2)
Now I'm pretty sure that the intall path is incorrect, but I'm
not sure what I can do to remedy this.
Another mystery is that I can successfully build an application
that links against the third part framework. It's just the
application linking against my framework linking against the
third party framework that breaks.
As always, help is greatly appreciated.
Philip Aker
email@hidden
_______________________________________________
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
Philip Aker
email@hidden
_______________________________________________
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