Downloading the zip file referenced earlier and using a simple main.c

        $ clang -x c -o main.o -c main.c
        $ clang main.o -o main
        $ otool -L main
        main:
                /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, 
current version 1213.0.0)

adding the framework right from the unzipped zip and then otool’ing it

        $ clang main.o -F ~/Downloads/Mac-Framework-master -framework Paddle -o 
main
        $ otool -L main
        main:
                
@executable_path/../Frameworks/Paddle.framework/Versions/A/Paddle 
(compatibility version 1.0.0, current version 1.0.0)
                /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, 
current version 1213.0.0)

That’s that @executable_path from the library, using otool -D on it ...

        $ otool -D ~/Downloads/Mac-Framework-master/Paddle.framework/Paddle 
        /Users/rols/Downloads/Mac-Framework-master/Paddle.framework/Paddle:
        @executable_path/../Frameworks/Paddle.framework/Versions/A/Paddle

now update it and check it again

        $ install_name_tool -id @rpath/bananas/are/tasty 
~/Downloads/Mac-Framework-master/Paddle.framework/Paddle 

        $ otool -D ~/Downloads/Mac-Framework-master/Paddle.framework/Paddle 
        /Users/rols/Downloads/Mac-Framework-master/Paddle.framework/Paddle:
        @rpath/bananas/are/tasty

and re-link main and then otool it again

        $ clang main.o -F ~/Downloads/Mac-Framework-master -framework Paddle -o 
main
        $ otool -L main
        main:
                @rpath/bananas/are/tasty (compatibility version 1.0.0, current 
version 1.0.0)
                /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, 
current version 1213.0.0)

That’s where it comes from - that’s how you can change it. Don’t know what 
you’re seeing. 

> On 3 Jul 2015, at 21:19, Kevin Meaney <k...@yvs.eu.com> wrote:
> 
>> 
>> I don’t know what the executable_path is for a screensaver, you’d think it 
>> was very much the same thing. So first simplest option is to work out what 
>> that is and then just put the library at the place it expects to be, 
>> @executable_path/../Frameworks/<lots of garbage>. As long as that’s within 
>> your bundle somewhere, trivial to do. You can even put it somewhere else and 
>> put a symlink in the bundle. 
> 
> The @executable_path for the Screen saver will be the path to the executable 
> process that loads the OP’s screen saver plugin. in this case 
> ScreenSaverEngine.
> 
>> 
>> If you want to change it to something like @rpath/whatever then
>> 
>>      install_name_tool -id @rpath/whatever <object>
> 
> This is where I get confused. In my project not the original posters my 
> framework has Installation Directory set to @rpath and everything works as I 
> need it to thanks to that Mike Ash article. But if I do otool -D on the 
> framework then I see @executable_path … etc. Making me conclude the rpath 
> information was stored separately in the binary to the install name so my 
> thinking was that modifying the install name wouldn’t help.
> 
> Kevin
> 


_______________________________________________

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to