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 <[email protected]> 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 ([email protected])
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 [email protected]