关于macos:install |
您所在的位置:网站首页 › dylib怎么安装 › 关于macos:install |
我有一个安装在/PATH/lib中的动态libray libtest.dylib,以及一个执行二进制文件myapp,它使用安装在/PATH/bin中的dylib。 我可以运行myapp来找到dylib,如下所示(在Mac OS X上使用DYLD_LIBRARY_PATH可以吗?动态库搜索算法有什么用?): 1DYLD_LIBRARY_PATH="/PATH/lib" myapp我想我可以使用install_name_tool来更新库和可执行文件,以便可以使用rpath找到该库。我在这篇文章中使用了提示-如何在dylib中指定rpath? 在lib中,我执行了此命令以添加rpath。 12install_name_tool -id"@rpath/libtest.dylib" libtest.dylib install_name_tool -add_rpath"@executable_path/../lib/" libtest.dylib在bin中,我执行了install_name_tool -add_rpath"@executable_path/../lib/" myapp。 但是,当我在bin目录中执行myapp时,出现错误消息。 1234dyld: Library not loaded: libtest.dylib Referenced from: /PATH/bin/./myapp Reason: image not found Trace/BPT trap: 5otool -l myapp显示rpath在myapp中已正确更新。 1234Load command 16 cmd LC_RPATH cmdsize 40 path @executable_path/../lib/ (offset 12)libtest.dylib也是如此 1234Load command 13 cmd LC_RPATH cmdsize 40 path @executable_path/../lib/ (offset 12)可能是什么问题? 添加 当然,在编译和链接时我可以使用cc -install_name,但是我想知道如何在修改生成的dylib和执行二进制文件时做同样的事情。 从库: 1cc -install_name"@loader_path/../lib/libtest.dylib" -dynamiclib -o libtest.dylib test.c或者,install_name可以使用@rpath: 1cc -install_name"@rpath/libtest.dylib" -dynamiclib -o libtest.dylib test.c从垃圾箱: 12cc -I../lib -c main.c cc -o main main.o ../lib/libtest.dylib -Wl,-rpath -Wl,@loader_path/../lib或仅一行: 1cc -I../lib -L../lib -o main main.c -ltest -Wl,-rpath -Wl,@loader_path/../lib从otool -l,我分析了应在原始库和二进制文件中添加或修改的内容。 Dylib 更改在id中: 12345678910Load command 2 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |