我正在尝试使用 USB PENDRIVE 来增加我当前构建大型库的路径。
所以,我有一个想法,在我的程序中创建一个指向 Pendrive 中文件夹的符号链接。这样它就使用笔驱动器中的空间而不是我的主存储空间。
/home/me/opencv/
<-- 这是我想要构建的产品
/home/me/opencv/build/
<-- 这是构建文件夹。
此时,没有足够的内存来构建它,所以我在中创建了这个符号链接/home/me/opencv/
mkdir /media/me/pendrive/opencv/build/
ln -s /media/me/pendrive/opencv/build/ /home/me/opencv/ -s
/home/me/opencv/
这在指向我的笔式驱动器的文件夹下创建了一个链接“build” 。
这里的问题是目录遍历也指向笔式驱动器。
cd /home/me/opencv
ls
这会在 opencv 文件夹内呈现许多文件夹和文件
但如果我这样做...
cd /home/me/opencv/build
ls ..
这会呈现一个空的 opencv 文件夹,其中只有一个名为 build 的文件夹。
答案1
有一个区别逻辑和身体的您遇到的目录路径。
cd /home/me/opencv/build
这会将您置于逻辑目录中,但由于符号链接/home/me/opencv/build
,您实际上位于逻辑目录中。/media/me/pendrive/opencv/build
ls ..
将向您显示的内容身体的父目录/media/me/pendrive/opencv
。
物理目录路径是解析了其所有符号链接的逻辑目录路径。如果逻辑目录路径不只包含符号链接,则它们是相同的。
另请参阅该构建目录中pwd -L
和while之间的区别(并阅读手册)。pwd -P
pwd
cd
还有-L
和-P
标志(并且-L
是默认值)。
答案2
你可以尝试一个绑定安装,假设你可以使用须藤或拥有 root 权限。例如,
mkdir /home/me/opencv/build
mkdir -p /media/me/pendrive/opencv/build
sudo mount -o bind /home/me/opencv/build /media/me/pendrive/opencv/build
然后,当 in 时/home/me/opencv/build
,您应该看到 in..
的内容/home/me/opencv/
。用于sudo umount /home/me/opencv/build
撤消安装。