原始
我正在寻找一种为C库创建非隔离开发环境的方法。用于C库开发的虚拟环境
我将最有可能使用cmake
建库,我的IDE是一个简单的文本编辑器。
现在的问题是,我不只是创建库但也有一些样本“应用程序”使用的库。 因此我需要在某处安装库的头文件和共享对象(我使用的是GNU/Linux),我不想将它安装到/usr/local/lib
或(更糟糕的)/usr/lib
。
有没有一种方法创建一个类似于Python的pyvenv(以及类似),在那里我可以将一切安装到,但仍可以访问主机库的虚拟环境?
此外,我不要重写我的$PATH
/$LD_LIBRARY_PATH
,建立一个虚拟机,容器,或chroot环境。
的使用会再看看这样的:
# switch to environment somehow
loadenv library1
# for library
cd library
make && make install
# for application
cd ../application1
make && ./application1
这可能吗?
编辑1
所以基本上我的目录结构如下所示:
library/
library/src/
library/src/<files>.c
library/include/<files>.h
application/
application/src/
application/src/<files>.c
首先,我需要编译库,并安装二进制文件和头文件。 这些应该安装在假的系统位置。
然后我可以编译应用程序并运行它。
编辑2
我想到一点关于它,它似乎所有我需要的是一个文件系统,沙箱。 所以基本上我想打开一个shell,其中每次写入磁盘都不会提交给文件系统,而是暂时保存在文件系统中。一个ramfs/tmpfs只在shell退出时被删除。
这样我可以准确测试是否编译,部署并没有任何危险现有的文件或目录,而不会意外创建文件或目录,而清洁起来真机上执行的一切都将如何表现。
谢谢你的回答,但是这不正是我想要的,我希望能够编译,部署和运行应用程序,如果库被安装在系统根目录下,所以我可以确定一切正常,但同时不会垃圾我的根文件系统。 – benaryorg
@benaryorg,在这种情况下,您需要一个VM或至少一个chroot环境。这个要求从你原来的问题中是不清楚的,或者我的阅读理解能力随着我清醒的时间减少而增加。 – thurizas
那么,在我的情况下,这并不是什么大问题,但它引起了我的注意,因为在那个方向似乎没有任何问题。 [portage](https://wiki.gentoo.org/wiki/Portage)使用名为'sandbox'的程序,该程序使用'$ LD_PRELOAD'以某种方式授予或阻止访问特定目录,但遗憾的是,它不支持临时存储数据。 – benaryorg