Linux软链接使用技巧

简介: Linux软链接使用技巧

软链接概述


软链接是Linux下常用的一种共享文件方式、目录的方式,这种方式类似于Windows下的快捷方式。一般一个文件或者目录在不同的路径都需要的时候,可以通过创建软链接的方式来共享,这样系统下面只有一份源文件、目录。另外,巧用软链接,可以大大增加应用程序的可移植性。


软链接创建与删除


软链接创建与删除比较简单,使用ln命令创建链接文件,格式如下:

ln  -s  [源文件或目录]  [目标文件或目录]

示例:


建立一个指向/usr/local/www的软链接到/tmp下面:

$: 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

boost库由于85%的模块只需要引用头文件就可以使用,所以使用也比较方便,不用编译;所以库文件也比较大,在每一种编译器下都会使用,通过建软链接的方式共享文件,也减少了磁盘空间占用,下面是我建立的软链接:

$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等。


所以不同平台的应用程序中要么加编译开关,宏定义来区分不同平台的设备文件名称,这样会导致代码臃肿,可读性查,不同平台需要不同编译开关,容易出错。


而使用软链接可以很好的解决这一问题,可以自己创建一个dev目录(位置自己定),我习惯和应用程序放在同级目录下。


然后将这些设备文件用软链接来统一名称如:


平台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


这样只需要增加一个创建软链接的脚本,在系统启动的时候调用一下,就可以解决不同平台设备文件不一样的问题,应用程序不用修改,驱动也不用改。


在实际应用中,还有更多技巧有待大家去探索,这里只是抛砖引玉,有比较好的技巧也可以在下面留言里留下来,一起交流学习!

目录
相关文章
|
6月前
|
Linux Windows
Linux 软链接与硬链接
创建软链接 软链接是一个指向另一个文件或目录的引用,类似于Windows系统中的快捷方式。 ln -s [目标文件路径] [链接文件名] 例如,要在当前目录下创建一个名为link_file的软链接,指向/home/user/desktop/link,可以执行以下命令 ln -s /home/user/desktop/link link_file 这将创建一个软链接link_file,它实际上是指向/home/user/desktop/link的引用。
59 1
|
Linux 测试技术 索引
软件测试|Linux基础教程:ln命令与软链接和硬链接
软件测试|Linux基础教程:ln命令与软链接和硬链接
99 0
linux实用技巧:cp时自动将软链接所指定的文件实体也一起copy(软链接将会变成目标文件实体)
linux实用技巧:cp时自动将软链接所指定的文件实体也一起copy(软链接将会变成目标文件实体)
linux实用技巧:cp时自动将软链接所指定的文件实体也一起copy(软链接将会变成目标文件实体)
|
3月前
|
Linux 索引 Windows
在Linux中,什么是硬链接和软链接?
在Linux中,什么是硬链接和软链接?
|
3月前
|
存储 Linux
在Linux中,硬链接和软链接有何区别?
在Linux中,硬链接和软链接有何区别?
|
3月前
|
存储 安全 Linux
在Linux中,硬链接和软链接特点和区别?
在Linux中,硬链接和软链接特点和区别?
|
5月前
|
Linux C语言 Windows
Linux技术分享:Linux设置软链接
Linux技术分享:Linux设置软链接
55 2
|
5月前
|
监控 安全 Linux
【权限维持】Linux&OpenSSH&PAM后门&SSH软链接&公私钥登录
【权限维持】Linux&OpenSSH&PAM后门&SSH软链接&公私钥登录
|
5月前
|
Linux vr&ar C语言
【linux】硬链接和软链接
【linux】硬链接和软链接
33 0
|
6月前
|
存储 Linux 索引
linux系统软链接与硬链接一文通
通过本文可以迅速掌握linux下软链接与硬链接的相关知识
51 0