gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 02:08:44 24 4
gpt4 key购买 nike

有时我会尝试尝试一些免费的 C/C++ 项目。

十有八九这会导致让所有依赖项正常工作带来很多痛苦,而且至关重要的是,这不可避免地会破坏一些其他项目的依赖项,因此当我回到另一个项目时,我又会进入另一个受虐狂 session 。

一定有更好的方法,但我没能找到。

那么是否应该安装共享库以便只有一个项目“看到”它们?

我使用的是 Mac 操作系统,所以我真的只对适用于该操作系统的解决方案感兴趣。

我可以使用 Homebrew 软件安装这些库的解决方案的额外荣誉。

最佳答案

在编译(或链接)应用程序时,您可以指定 -rpath 选项来告诉它在运行时在哪里搜索共享库。包含 $ORIGIN 作为路径的第一个组成部分将导致搜索相对于可执行文件的位置完成。

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

例如;假设您将应用程序安装在/opt/myapp/bin/并将其库放入/opt/myapp/lib/,那么您会将 rpath 设置为 $ORIGIN/../lib/ 并且没有无论您将/opt/myapp 目录移动到哪里(只要您将其全部移动),应用程序都会在它自己的 lib/目录中找到它自己特定版本的库。

这就是 Unix 解决方案。在 Windows 上,您可以简单地将 DLL 放在与可执行文件相同的目录中,因为 Windows 会先在那里搜索。

关于c++ - 如何沙盒使用共享库的 C/C++ 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47118826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com