mac开发少不了需要编译动态库供其它可执行程序使用,其中有些知识点不那么简单。
开始之前使用命令man ld查看一下生成dylib的链接器选项。

install_name 选项 (@rpath)

设置-install_name @rpath/libmacbase.dylib
Screen Shot 2019-10-23 at 1.44.40 PM.png

Screen Shot 2019-10-23 at 2.12.16 PM.png

编译的dylib的时候指定这个选项,把dylib的路径写入dylib内部,这样在和可执行文件链接的时候,会记录下这个路径,dyld就可以定位到这个dylib了。

在可执行文件的编译选项中,设置-rpath, -Wl,-rpath,@loader_path/

Screen Shot 2019-10-23 at 2.26.16 PM.png

Screen Shot 2019-10-23 at 2.22.57 PM.png

显示@rpath位置

  1. DYLD_PRINT_LIBRARIES=1 ./openvpn3

参考

http://www.tanhao.me/pieces/1361.html/
https://www.cnblogs.com/csuftzzk/p/mac_run_path.html