Linux下软链接的使用技巧 |
您所在的位置:网站首页 › 日常使用linux的电子产品 › Linux下软链接的使用技巧 |
软链接概述
软链接是Linux下常用的一种共享文件方式、目录的方式,这种方式类似于Windows下的快捷方式。一般一个文件或者目录在不同的路径都需要的时候,可以通过创建软链接的方式来共享,这样系统下面只有一份源文件、目录。另外,巧用软链接,可以大大增加应用程序的可移植性。 软链接创建与删除软链接创建与删除比较简单,使用ln命令创建链接文件,格式如下: 1ln -s [源文件或目录] [目标文件或目录]示例: 建立一个指向/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注意:删除的时候,如果是目录,结尾时,不要加“/”,不然会把指向的目录给删掉! 软链接使用技巧 共享目录文件一般做嵌入式Linux开发,linux的虚拟机都会安装好多平台的交叉编译器,这些编译器可能会用到一些库,库在使用的时候,需要将头文件放到编译器的路径下面,这样程序编译的时候,会自动找到头文件,这里以boost库为例。 下面是我的虚拟机里: 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-linuxboost库由于85%的模块只需要引用头文件就可以使用,所以使用也比较方便,不用编译;所以库文件也比较大,在每一种编译器下都会使用,通过建软链接的方式共享文件,也减少了磁盘空间占用,下面是我建立的软链接: 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 统一设备文件名,增强应用程序可移植性不同平台的嵌入式Linux下,可能设备文件名、GPIO编号不一样,比如有的平台下,串口设备名称为:ttySxx, 有的则是ttyAMAxx;这个产品的运行指示灯是gpio51控制,另一个产品是gpio32等。 所以不同平台的应用程序中要么加编译开关,宏定义来区分不同平台的设备文件名称,这样会导致代码臃肿,可读性查,不同平台需要不同编译开关,容易出错。 而使用软链接可以很好的解决这一问题,可以自己创建一个dev目录(位置自己定),我习惯和应用程序放在同级目录下。 然后将这些设备文件用软链接来统一名称如: 平台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#忽略我错误的时间 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平台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#忽略我错误的时间 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这样只需要增加一个创建软链接的脚本,在系统启动的时候调用一下,就可以解决不同平台设备文件不一样的问题,应用程序不用修改,驱动也不用改。 微信公众号:fensnote |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |