日期:2014-05-16  浏览次数:21235 次

像libiconv.so.2这样.so后面有数字的动态库如何链接,如何理解?(高手来)
为什么有些动态库后面有数字呢?如:libiconv.so.2 有人说是和升级新版本有关,创建一个软连接。
我的makefile里要链接iconv这个动态库自然是添加 -liconv,那么运行时只会依赖libiconv.so而不是libiconv.so.2或者libiconv.so.1吧?
如果要依赖libiconv.so.2那么makefile如何填写呢?
这里对动态库的软链接和依赖,不太理解,多谢解惑.

------解决方案--------------------
版本有关,比如你上面说的libiconv.so.2,一般会建立一个libiconv.so的软连接,用-liconv也是找的libiconv.so,这样的好处是我可以有多个版本的iconv库,比如还有一个libiconv.so.1,可以同时存在,但编译和执行的时候使用的是libiconv.so软连接指向的那个!这样makefile也不需要根据库版本进行变更
------解决方案--------------------
引用:
Quote: 引用:

版本有关,比如你上面说的libiconv.so.2,一般会建立一个libiconv.so的软连接,用-liconv也是找的libiconv.so,这样的好处是我可以有多个版本的iconv库,比如还有一个libiconv.so.1,可以同时存在,但编译和执行的时候使用的是libiconv.so软连接指向的那个!这样makefile也不需要根据库版本进行变更

o,多谢了,那libiconv.so到底指向libiconv.so.1还是libiconv.so.2是安装包或者升级包去指定的吧?同时应该只能指定一个吧?(同一目录下只有一个同名链接文件)

最终还是指向libiconv.so的