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

MHa*_*rdy 0 linux ubuntu shared-libraries dynamic-linking fann

我试图使用libfann版本2.0.1而不是最新版本2.2.0,但无法弄清楚如何这样做.有关如何做到这一点的任何想法?

通常是完美的:

gcc fann_calculator.c -o run_fann_calculator -lfann -lm
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Bas*_*tch 6

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

我建议仔细阅读ld.so(8)ldd(1)手册页.您当然可以跟踪加载的库(例如LD_DEBUGenvirnonment变量).在安装库之后,不要忘记重新运行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
Run Code Online (Sandbox Code Playgroud)

然后检查ldd run_fann_calculator你是否得到了预期的[版本] libfann库.

不要忘记阅读程序库Howto.您可能希望将适当的标志传递给ld,例如-rpath.您可能需要使用它们传递gcc着,也许是gcc的链接选项,如 -Wl