On Fri, Jun 20, 2008 at 3:12 AM, Martin <[EMAIL PROTECTED]> wrote:
>
> Thanks for your answers but it's still not working here. Plus I don't really
> see why I should use "-id" option since what I really want to do is *change*
> one of the paths.

Straight from "man install_name_tool":

       -change old new
              Changes the dependent shared library install name old to new  in
              the specified Mach-O binary.  More than one of these options can
              be specified.  If the Mach-O binary does  not  contain  the  old
              install  name  in  a  specified  -change  option  the  option is
              ignored.

       -id name
              Changes the shared library  identification  name  of  a  dynamic
              shared  library  to name.  If the Mach-O binary is not a dynamic
              shared library and the -id option is specified it is ignored.

You *have* read the man page for the tool you're using, right? :-)

> $ install_name_tool -change
> /Users/martin/Library/Frameworks/Foo.framework/Versions/A/Foo
> @executable_path../../Frameworks/Foo.framework/Versions/A/Foo
> Foo.framework/Foo

What you're doing here is, wherever Foo.framework/Foo is *linked to* a
dependent shared library at the first path, change that reference to
refer to the second path instead. That is, the -change option doesn't
change the install name of the target. It changes the target's
references to *other* libraries.

If any applications have linked against your framework using the old
install_name, you could use the -change option to update the apps'
references to your framework.

> There are no error messages given by install_name_tool, it just silently
> does nothing...

That's what it's documented to, when -change is used and
Foo.framework/Foo has no external references to the given path.

As others have suggested, the easiest way to set the install name for
a framework is to "get info" on the target in Xcode and enter it
there. That's simple, automatic, and painless. That said, if the above
is copy & pasted, and its the same path you tried with the -id option,
you're missing a slash after @executable_path, and looking a directory
too far up the tree. It should be:

    install_name_tool -id
@executable_path/../Frameworks/Foo.framework/Versions/A/Foo

Suggested reading:

    
<http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/install_name_tool.1.html>

    
<http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/Tasks/CreatingFrameworks.html>
- especially the section titled "Embedding a Private Framework in Your
Application Bundle".

sherm--

-- 
Cocoa programming in Perl: http://camelbones.sourceforge.net
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to