linux中的软链接其实是很好理解的, 非常类似于Windows下的快捷方式, 我们来做个简单的实验玩玩:
[taoge@localhost test]$ echo hello > a.txt [taoge@localhost test]$ ln -s a.txt b.txt [taoge@localhost test]$ diff a.txt b.txt [taoge@localhost test]$ ll total 4 -rw-rw-r-- 1 taoge taoge 6 Nov 4 07:27 a.txt lrwxrwxrwx 1 taoge taoge 5 Nov 4 07:27 b.txt -> a.txt [taoge@localhost test]$ [taoge@localhost test]$ [taoge@localhost test]$ [taoge@localhost test]$ echo world >> a.txt [taoge@localhost test]$ diff a.txt b.txt [taoge@localhost test]$ [taoge@localhost test]$ [taoge@localhost test]$ [taoge@localhost test]$ echo c++ >> b.txt [taoge@localhost test]$ diff a.txt b.txt [taoge@localhost test]$ [taoge@localhost test]$ [taoge@localhost test]$ [taoge@localhost test]$ rm b.txt [taoge@localhost test]$ cat a.txt hello world c++ [taoge@localhost test]$ [taoge@localhost test]$ [taoge@localhost test]$ [taoge@localhost test]$ ln -s a.txt b.txt [taoge@localhost test]$ diff a.txt b.txt [taoge@localhost test]$ rm a.txt [taoge@localhost test]$ cat b.txt cat: b.txt: No such file or directory [taoge@localhost test]$ ll total 0 lrwxrwxrwx 1 taoge taoge 5 Nov 4 07:29 b.txt -> a.txt (注意, 此处的a.txt在闪动) [taoge@localhost test]$
根据如上实验和结果, 我们知道, 软链接其实就是快捷方式。 有时候, 我们也把软链接叫符号链接。 大家可以根据上述小实验轻易地总结出软链接的特点, 我就不费口舌了。
下面, 我们继续来看小实验:
[taoge@localhost test]$ ls main.c [taoge@localhost test]$ cat main.c #include <stdio.h> int main() { printf("hello world\n"); return 0; } [taoge@localhost test]$ gcc main.c [taoge@localhost test]$ ./a.out hello world [taoge@localhost test]$ [taoge@localhost test]$ [taoge@localhost test]$ ./x -bash: ./x: No such file or directory [taoge@localhost test]$ ln -s a.out x [taoge@localhost test]$ ./x hello world [taoge@localhost test]$看了这个小实验, 我无需多说软连接的用法和用途了。
在实际开发中, 偶尔会遇到cannot find -lssl, cannot find -lcrypto这样的问题, 是什么原因呢? 因为找不到libssl.so库和libcrypto.so这样的库,那怎么办呢? 用软链接吧。 在root权限下进入到/usr/lib中去:
[root@localhost lib]# ll | grep ssl -rwxr-xr-x 1 root root 216656 Aug 27 2010 libssl3.so lrwxrwxrwx. 1 root root 15 Mar 24 2015 libssl.so.10 -> libssl.so.1.0.0 -rwxr-xr-x 1 root root 355280 Jun 30 2010 libssl.so.1.0.0 drwxr-xr-x. 3 root root 4096 Mar 24 2015 openssl [root@localhost lib]# [root@localhost lib]# [root@localhost lib]# ll | grep crypto lrwxrwxrwx. 1 root root 18 Mar 24 2015 libcrypto.so.10 -> libcrypto.so.1.0.0 -rwxr-xr-x 1 root root 1596748 Jun 30 2010 libcrypto.so.1.0.0 [root@localhost lib]#可以看到, 是有类似库的, 只是文件名不完全吻合, 现在又不想改原来的文件名, 那怎么办呢? 用软链接吧, 搞定。
软链接的本质就是快捷方式,很常用, 更多的讲述似乎没有必要了。