在编译C时使用旧版本的共享linux库

时间:2012-10-26 17:50:13

标签: linux ubuntu shared-libraries dynamic-linking fann

我正在尝试使用libfann版本2.0.1而不是最新版本2.2.0,但无法弄清楚如何执行此操作。有关如何做到这一点的任何想法?

通常完美无缺:

gcc fann_calculator.c -o run_fann_calculator -lfann -lm

其中fann_calculator.c包含一个调用神经网络的程序。

由于

1 个答案:

答案 0 :(得分:6)

这取决于两个图书馆所在的位置。如果它们安装在同一目录中(例如,都安装在/usr/lib/中),您可能会获得最年轻的目录。

我建议您仔细阅读ld.so(8)ldd(1)手册页。您当然可以跟踪加载的库(例如LD_DEBUG envirnonment变量)。在安装库之后,不要忘记重新运行ldconfig

你也可以玩一些LD_LIBRARY_PATH技巧;例如,将其设置为$HOME/lib:/usr/lib并在$HOME/lib/中将适当的符号链接安装到所需的精确库中。例如,你可以做

  ln -s /usr/lib/libfann.so.2.0.1 $HOME/lib/libfann.so.2
  export LD_LIBRARY_PATH=$HOME/lib:/usr/lib:/lib

然后与ldd run_fann_calculator一起检查您是否获得了libfann库的预期版本。

不要忘记阅读Program Library Howto。您可能希望将适当的标记传递给ld,例如-rpath。您可能需要使用gcc传递它们,可能需要使用Gcc Link Options,例如-Wl