我的动态库已经成功构建,并依赖于使用自定义前缀(./b2 install --prefix=PREFIX
)构建和安装的boost库。但是,当我在我的库上运行otool -L
时,我会得到以下输出:
...
libboost_regex.dylib (compatibility version 0.0.0, current version 0.0.0)
libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0)
...
与其他依赖项不同,这个依赖项没有给出指向这些Boost库的完整路径。这导致我的库被应用程序加载时出现运行时错误。
我知道可以使用install_name_tool
手动解决这个问题。但是我想弄清楚,为什么只有boost库会出现这种情况,而我的库依赖的其他依赖项却没有发生这种情况?
编辑
有人要求我举一个编译命令的例子,但像往常一样,“真实的例子”有点更加复杂。
在我的情况下,有一个依赖于Boost的库libA.dylib
。然后,还有我的库libMy.dylib
,它也依赖于libA.dylib
和Boost。这个问题在configure
步骤中出现,在此步骤中执行了简单的库存在检查(类似于AC_CHECK_LIB
的自定义测试程序)。这个检查尝试构建一个小的测试程序,该程序链接到libA.dylib
,以证明libA.dylib
的可用性,但它失败了-由于找不到boost库的错误。当然,它找不到它们,因为otool -L libA.dylib
给出了没有完整路径的boost库。