Linux下軟鏈結使用

2021-10-09 09:23:18 字數 3186 閱讀 8696

軟鏈結是linux下常用的一種共享檔案方式、目錄的方式,這種方式類似於windows下的快捷方式。一般乙個檔案或者目錄在不同的路徑都需要的時候,可以通過建立軟鏈結的方式來共享,這樣系統下面只有乙份原始檔、目錄。另外,巧用軟鏈結,可以大大增加應用程式的可移植性。

ln  -s  [原始檔或目錄]

[目標檔案或目錄]

$: ln -s /usr/local/www /tmp/www

$: ls /tmp/www -l

$: lrwxrwxrwx 1 fens fens 14 9月 12 08:56 www -> /usr/local/www

rm /tmp/www
注意: 刪除的時候,如果是目錄,結尾時,不要加「/」,不然會把指向的目錄給刪掉!

共享目錄檔案

一般做嵌入式linux開發,linux的虛擬機器都會安裝好多平台的交叉編譯器,這些編譯器可能會用到一些庫,庫在使用的時候,需要將標頭檔案放到編譯器的路徑下面,這樣程式編譯的時候,會自動找到標頭檔案,這裡以boost庫為例。

下面是我的虛擬機器裡:

drwxr-xr-x 12 1007 users 4.0k 7月  18  2019 arm-himix200-linux

drwxr-xr-x 9 root root 4.0k 1月 24 2017 arm-hisiv300-linux

drwxr-xr-x 10 520 520 4.0k 5月 5 2019 arm-hisiv500-linux

drwxr-xr-x 10 520 520 4.0k 6月 9 10:30 arm-hisiv600-linux

$ls arm-himix200-linux/target/usr/include/boost -l

lrwxrwxrwx 1 root root 10 7月 19 2018 arm-himix200-linux/target/usr/include/boost -> /opt/boost

$ls arm-hisiv300-linux/target/usr/include/boost -l

lrwxrwxrwx 1 root root 10 5月 12 2018 arm-hisiv300-linux/target/usr/include/boost -> /opt/boost

$ls arm-hisiv500-linux/target/usr/include/boost -l

lrwxrwxrwx 1 root root 10 7月 30 2019 arm-hisiv500-linux/target/usr/include/boost -> /opt/boost

$ls arm-hisiv600-linux/target/usr/include/boost -l

lrwxrwxrwx 1 root root 10 7月 30 2019 arm-hisiv600-linux/target/usr/include/boost -> /opt/boost

統一裝置檔名,增強應用程式可移植性

不同平台的嵌入式linux下,可能裝置檔名、gpio編號不一樣,比如有的平台下,串列埠裝置名稱為:ttysxx, 有的則是ttyamaxx;這個產品的執行指示燈是gpio51控制,另乙個產品是gpio32等。

所以不同平台的應用程式中要麼加編譯開關,巨集定義來區分不同平台的裝置檔名稱,這樣會導致**臃腫,可讀性查,不同平台需要不同編譯開關,容易出錯。

平台1:

$ cd /usr/local/dev

$ ln -s /dev/ttys1 ./com1

$ ln -s /dev/ttys2 ./com2

$ ln -s /dev/ttys3 ./com3

$ ln -s /sys/class/leds/led_orange/brightness ./runled

$ ln -s /sys/class/gpio/gpio211/value ./powerled

$ ls -l

#忽略我錯誤的時間

lrwxrwxrwx 1 fens fens 10 1月 1 2000 com1 -> /dev/ttys1

lrwxrwxrwx 1 fens fens 10 1月 1 2000 com2 -> /dev/ttys2

lrwxrwxrwx 1 fens fens 11 1月 1 2000 com3 -> /dev/ttys3

lrwxrwxrwx 1 fens fens 29 1月 1 2000 power -> /sys/class/gpio/gpio211/value

lrwxrwxrwx 1 fens fens 37 1月 1 2000 runled -> /sys/class/gpio/gpio212/value

平台2:

$ cd /usr/local/dev

$ ln -s /dev/ttyama1 ./com1

$ ln -s /dev/ttyama2 ./com2

$ ln -s /dev/ttyama3 ./com3

$ ln -s /sys/class/leds/led_orange/brightness ./runled

$ ln -s /sys/class/gpio/gpio211/value ./powerled

$ ls -l

#忽略我錯誤的時間

lrwxrwxrwx 1 fens fens 10 1月 1 2000 com1 -> /dev/ttyama1

lrwxrwxrwx 1 fens fens 10 1月 1 2000 com2 -> /dev/ttyama2

lrwxrwxrwx 1 fens fens 11 1月 1 2000 com3 -> /dev/ttyama3

lrwxrwxrwx 1 fens fens 29 1月 1 2000 power -> /sys/class/gpio/gpio41/value

lrwxrwxrwx 1 fens fens 37 1月 1 2000 runled -> /sys/class/gpio/gpio42/value

這樣只需要增加乙個建立軟鏈結的指令碼,在系統啟動的時候呼叫一下,就可以解決不同平台裝置檔案不一樣的問題,應用程式不用修改,驅動也不用改。

linux下軟鏈結與硬鏈結

硬鏈結 給檔案做替身,可以刪除兩個檔案中的任意乙個檔案,不受影響 目錄不能夠做目錄的硬鏈結 只能在同乙個分割槽下做硬鏈結,跨分割槽不行 使用方法 ln i root 1.txt tmp 2.txt 給root下的1.txt做乙個硬鏈結,連線到tmp下的2.txt 軟鏈結相當於桌面上的快捷方式 可以跨...

Linux下建立 刪除軟鏈結

lbzeng lbzeng ubuntu sudo ln s pbrt v3 build usr bin 接下來,要做的事情是刪除上面指令建立的軟鏈結。可以通過再次執行上面這條指令,來看看這條指令到底建立了那些軟鏈結。lbzeng lbzeng ubuntu sudo ln s pbrt v3 bu...

linux 下的硬鏈結與軟鏈結

在linux系統中,核心為每乙個新建立的檔案分配乙個inode 索引結點 每個檔案都有乙個惟一的inode號。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複製到記憶體,從而實現檔案的快速訪問。linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic l...