• 正文
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

Linux下軟鏈接的使用技巧

2024/07/13
1815
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

軟鏈接概述

軟鏈接是Linux下常用的一種共享文件方式、目錄的方式,這種方式類(lèi)似于Windows下的快捷方式。一般一個(gè)文件或者目錄在不同的路徑都需要的時(shí)候,可以通過(guò)創(chuàng)建軟鏈接的方式來(lái)共享,這樣系統(tǒng)下面只有一份源文件、目錄。另外,巧用軟鏈接,可以大大增加應(yīng)用程序的可移植性。

軟鏈接創(chuàng)建與刪除

軟鏈接創(chuàng)建與刪除比較簡(jiǎn)單,使用ln命令創(chuàng)建鏈接文件,格式如下:

1ln??-s??[源文件或目錄](méi)??[目標(biāo)文件或目錄](méi)

示例:
建立一個(gè)指向/usr/local/www的軟鏈接到/tmp下面:

1$:?ln?-s?/usr/local/www?/tmp/www
2$:?ls?/tmp/www?-l
3$:?lrwxrwxrwx?1?fens?????fens???????14?9月??12?08:56?www?->?/usr/local/www

刪除軟鏈接:

1rm?/tmp/www?

注意:刪除的時(shí)候,如果是目錄,結(jié)尾時(shí),不要加“/”,不然會(huì)把指向的目錄給刪掉!

軟鏈接使用技巧

共享目錄文件

一般做嵌入式Linux開(kāi)發(fā),linux的虛擬機(jī)都會(huì)安裝好多平臺(tái)的交叉編譯器,這些編譯器可能會(huì)用到一些庫(kù),庫(kù)在使用的時(shí)候,需要將頭文件放到編譯器的路徑下面,這樣程序編譯的時(shí)候,會(huì)自動(dòng)找到頭文件,這里以boost庫(kù)為例。
下面是我的虛擬機(jī)里:

1drwxr-xr-x?12?1007?users?4.0K?7月??18??2019?arm-himix200-linux
2drwxr-xr-x??9?root?root??4.0K?1月??24??2017?arm-hisiv300-linux
3drwxr-xr-x?10??520???520?4.0K?5月???5??2019?arm-hisiv500-linux
4drwxr-xr-x?10??520???520?4.0K?6月???9?10:30?arm-hisiv600-linux

boost庫(kù)由于85%的模塊只需要引用頭文件就可以使用,所以使用也比較方便,不用編譯;所以庫(kù)文件也比較大,在每一種編譯器下都會(huì)使用,通過(guò)建軟鏈接的方式共享文件,也減少了磁盤(pán)空間占用,下面是我建立的軟鏈接:

 1$ls?arm-himix200-linux/target/usr/include/boost?-l
 2lrwxrwxrwx?1?root?root?10?7月??19??2018?arm-himix200-linux/target/usr/include/boost?->?/opt/boost
 3
 4$ls?arm-hisiv300-linux/target/usr/include/boost?-l
 5lrwxrwxrwx?1?root?root?10?5月??12??2018?arm-hisiv300-linux/target/usr/include/boost?->?/opt/boost
 6
 7$ls?arm-hisiv500-linux/target/usr/include/boost?-l
 8lrwxrwxrwx?1?root?root?10?7月??30??2019?arm-hisiv500-linux/target/usr/include/boost?->?/opt/boost
 9
10$ls?arm-hisiv600-linux/target/usr/include/boost?-l
11lrwxrwxrwx?1?root?root?10?7月??30??2019?arm-hisiv600-linux/target/usr/include/boost?->?/opt/boost
統(tǒng)一設(shè)備文件名,增強(qiáng)應(yīng)用程序可移植性

不同平臺(tái)的嵌入式Linux下,可能設(shè)備文件名、GPIO編號(hào)不一樣,比如有的平臺(tái)下,串口設(shè)備名稱(chēng)為:ttySxx, 有的則是ttyAMAxx;這個(gè)產(chǎn)品的運(yùn)行指示燈是gpio51控制,另一個(gè)產(chǎn)品是gpio32等。

所以不同平臺(tái)的應(yīng)用程序中要么加編譯開(kāi)關(guān),宏定義來(lái)區(qū)分不同平臺(tái)的設(shè)備文件名稱(chēng),這樣會(huì)導(dǎo)致代碼臃腫,可讀性查,不同平臺(tái)需要不同編譯開(kāi)關(guān),容易出錯(cuò)。

而使用軟鏈接可以很好的解決這一問(wèn)題,可以自己創(chuàng)建一個(gè)dev目錄(位置自己定),我習(xí)慣和應(yīng)用程序放在同級(jí)目錄下。
然后將這些設(shè)備文件用軟鏈接來(lái)統(tǒng)一名稱(chēng)如:

平臺(tái)1:

 1$?cd?/usr/local/dev
 2$?ln?-s?/dev/ttyS1?./com1
 3$?ln?-s?/dev/ttyS2?./com2
 4$?ln?-s?/dev/ttyS3?./com3
 5$?ln?-s?/sys/class/leds/led_orange/brightness?./runLed
 6$?ln?-s?/sys/class/gpio/gpio211/value?./powerLed
 7$?ls?-l
 8#忽略我錯(cuò)誤的時(shí)間
 9lrwxrwxrwx?1?fens?fens?10?1月???1??2000?com1?->?/dev/ttyS1
10lrwxrwxrwx?1?fens?fens?10?1月???1??2000?com2?->?/dev/ttyS2
11lrwxrwxrwx?1?fens?fens?11?1月???1??2000?com3?->?/dev/ttyS3
12lrwxrwxrwx 1 fens fens 29 1月?? 1  2000 power ->?/sys/class/gpio/gpio211/value
13lrwxrwxrwx 1 fens fens 37 1月?? 1  2000 runLed ->?/sys/class/gpio/gpio212/value

平臺(tái)2:

 1$?cd?/usr/local/dev
 2$?ln?-s?/dev/ttyAMA1?./com1
 3$?ln?-s?/dev/ttyAMA2?./com2
 4$?ln?-s?/dev/ttyAMA3?./com3
 5$?ln?-s?/sys/class/leds/led_orange/brightness?./runLed
 6$?ln?-s?/sys/class/gpio/gpio211/value?./powerLed
 7$?ls?-l
 8#忽略我錯(cuò)誤的時(shí)間
 9lrwxrwxrwx?1?fens?fens?10?1月???1??2000?com1?->?/dev/ttyAMA1?
10lrwxrwxrwx?1?fens?fens?10?1月???1??2000?com2?->?/dev/ttyAMA2
11lrwxrwxrwx?1?fens?fens?11?1月???1??2000?com3?->?/dev/ttyAMA3
12lrwxrwxrwx 1 fens fens 29 1月?? 1  2000 power ->?/sys/class/gpio/gpio41/value
13lrwxrwxrwx 1 fens fens 37 1月?? 1  2000 runLed ->?/sys/class/gpio/gpio42/value

這樣只需要增加一個(gè)創(chuàng)建軟鏈接的腳本,在系統(tǒng)啟動(dòng)的時(shí)候調(diào)用一下,就可以解決不同平臺(tái)設(shè)備文件不一樣的問(wèn)題,應(yīng)用程序不用修改,驅(qū)動(dòng)也不用改。

微信公眾號(hào):fensnote

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
NX5032GA-20.000M-STD-CSU-2 1 Nihon Dempa Kogyo Co Ltd Parallel - Fundamental Quartz Crystal, 20MHz Nom, ROHS COMPLIANT PACKAGE-2
暫無(wú)數(shù)據(jù) 查看
LAN8742AI-CZ 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER

ECAD模型

下載ECAD模型
$2.57 查看
TLP293-4(LA-TP,E 1 Toshiba America Electronic Components TRANSISTOR OUTPUT OPTOCOUPLER
$1.3 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶(hù)資源
  • 寫(xiě)文章/發(fā)需求
立即登錄