gcc (GCC) 4.8.1
Fedora 19 Linux localhost.localdomain 3.11.4-201.fc19.x86_64 #1 SMP Thu Oct 10 14:11:18 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
cmake version 2.8.11
我正在使用 cmake 创建一个共享库,该库动态链接一些系统库 uuid、asound、crypto 和 ssl。
我已将编译器和链接器标志设置为使用 32 位模式进行编译:
set_target_properties(app_module_sip PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
当我编译时,我得到了这些库的以下链接错误(只包括 uuid 而不是其他的以保持简短)。
/usr/bin/ld: cannot find -luuid
所以我在这些库上做了一个定位,看看它们是否存在
/usr/lib/libuuid.so.1
/usr/lib/libuuid.so.1.3.0
/usr/lib64/libuuid.so.1
/usr/lib64/libuuid.so.1.3.0
因此,由于 libuuid.so 不存在,我猜这就是它正在寻找的东西。我决定创建一个软链接:
ln -s libuuid.so.1 libuuid.so
所以现在我得到以下信息:
lrwxrwxrwx. 1 root root 12 Oct 23 14:00 libuuid.so -> libuuid.so.1
lrwxrwxrwx. 1 root root 16 Sep 18 22:04 libuuid.so.1 -> libuuid.so.1.3.0
-rwxr-xr-x. 1 root root 20772 Sep 10 16:34 libuuid.so.1.3.0
现在,当我进行定位时,我得到了这个:
/usr/lib/libuuid.so
/usr/lib/libuuid.so.1
/usr/lib/libuuid.so.1.3.0
在为每个库创建软链接之后,一切都可以编译和链接。
问题:
1) 我不是 Linux 专家,但为系统库创建软链接是否安全?会不会对其他地方产生影响?
2)为什么库有不同的版本号也必须有软链接?libuuid.so.1.3.0、libuuid.so.1 等。