dylib绝对路径问题

最近刚接触osx下的开发,遇到一个link的第三方库始终是绝对路径的问题。最后才发现osx上库被link的路径居然是库自己决定的。解决办法如下:

otool -L lib_a.dylib # 查看库的link情况

第一行是库的安装路径,就是这一行导致了程序link路径变成了绝对值。修改方法:

install_name_tool -id @executable_path/lib/lib_a.dylib lib_a.dylib

@executable_path是可执行文件所在目录,换成相对路径的关键就在于此。当然也可以用@rpath

如果lib_a.dylib中还link了另一个库,也是随程序一起提供的,那么也需要修改。修改方法:

install_name_tool -change /usr/local/bin/lib_b.dylib @executable_path/lib/lib_b.dylib lib_a.dylib

修改完后在用这个库编译工程就没有link的问题了。lib_a.dylib和lib_b.dylib发布的时候复制到可执行文件同目录的lib下即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容