如何使用共享库的沙盒C / C ++项目

时间:2017-11-05 06:26:18

标签: c++ c homebrew

我有时会对我想要试验的免费C / C ++项目嗤之以鼻。

十分之九会导致很多痛苦让所有依赖项都起作用,并且这不可避免地会破坏其他项目的依赖关系,这样当我回到其他项目时我又会再次参与其中其他受虐狂会议。

必须有更好的方法,但我找不到它。

因此,应该安装共享库,以便只有一个项目能够看到'它们?

我在Mac OS上,所以我真的只对在那里工作的解决方案感兴趣。

我可以使用自制程序安装这些库的解决方案的额外荣誉。

1 个答案:

答案 0 :(得分:2)

在编译(或者更确切地说是链接)应用程序时,您可以指定-rpath选项以告知它在运行时搜索共享库的位置。将$ORIGIN作为路径的第一个组成部分将导致搜索相对于可执行文件的位置进行。

这意味着您可以将可执行文件库与其他应用程序库分开。

例如;假设您在/ opt / myapp / bin /中安装应用程序并将其库放在/ opt / myapp / lib /中,然后将rpath设置为$ORIGIN/../lib/并且无论您在何处移动/ opt / myapp目录to(只要你移动所有它)应用程序将在它自己的lib / dir中找到它自己的特定版本的库。

这是Unix解决方案。在Windows上,您只需将DLL放在与可执行文件相同的目录中,因为Windows将首先在那里搜索。