原始
我正在尋找一種爲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