| 威's profile我只是风的影子,根本不存在的东西PhotosBlogLists | Help |
|
27 April 把库的搜索路径编译到程序中 通常在linux下的程序都会依赖一堆的so,系统会在/etc/ld.so.conf中定义的路径中寻找这些
动态库。比如装了一个软件,它有一些自己的so,在/opt/myproduct/lib下,很可能它会修改 /etc/ld.so.conf,把/opt/myproduct/lib添加进去,以便自己的程序使用的时候能找到。但这样 引入了一些潜在的问题,容易出来版本混乱,就象我前面遇到的问题,下面两个地方都有同一个库: libfreetype.so.6 => /usr/lib/libfreetype.so.6 libfreetype.so.6 => /opt/gd/lib/libfreetype.so.6 其中第一个是系统的,第二个是由于安装其他软件给附带安装上的,这两个libfreetype.so.6都是 符号连接,系统的是连到libfreetype.so.6.3.8,第二个是libfreetype.so.6.3.7,就这一点小小 的差别就让我的一些程序不能运行,虽然说这也和这个库的设计有关,但这种情况是可以避免的。 就是在gcc编译的参数里带上库的搜索路径,很简单,比如 gcc -Wl,-R/opt/myproduct/lib ...
就把/opt/myproduct/lib带到了编译好的程序中,改程序运行的时候会先到这个路径中搜索库。 这样就不需要通过把/opt/myproduct/lib添加到/etc/ld.so.conf中这种修改系统的办法来达到目的。 |
|
|