如何在编译时指定库位置

如何在编译时指定库位置

如何在运行 ./configure 时指定库的位置?

我四处搜索并认为答案在于设置 LDFLAGS 和 CPPFLAGS,但我不确定如何做到这一点。

具体来说,我已经编译了 libx264,现在我想编译 libav 并启用 libx264 支持,但不知道如何将 ./configure 指向我的 libx264 include 和 lib 文件夹。

谢谢。

答案1

有两种方法可以将配置变量传递给./configure,并且这在很大程度上取决于具体项目,因此您必须查看文档。

第一种是使用--with...脚本作者提供的选项。例如,xcircuit在 14.04 中必须像这样配置:

./configure --with-tcl --with-tk --with-tcllibs=/usr/lib/x86_64-linux-gnu/ --with-tklibs=/usr/lib/x86_64-linux-gnu/ 

另一种方法是将环境变量传递给脚本(在配置阶段)或 Makefile(在编译阶段):

CPPFLAGS=-Wall ./configure 

或者

CPPLAGS=-Wall make 

总之,这完全取决于作者如何编写软件。您应该参考 libav 的具体文档。

答案2

谢谢你的指点。我读了更多资料,发现了如何做到这一点。解决方案有两个方面。

  1. 使用“--enable-shared”和“--enable-static”编译 x264。如果不指定“--enable-shared”,则永远找不到该库。

  2. 指定 x264 制作过程生成的“lib”和“include”文件的位置,如下所示:-

    ./configure --extra-ldflags="-L/path/to/extra/lib" --extra-cflags="-I/path/to/extra/includes" --enable-x264 ..etc ..etc

我现在已经成功编译了支持 x264 的 libav,并具有以下二进制文件:-

avconv、avplay、avprobe、avserver、ffmpeg。

当然,我确信如果我刚刚使用 apt-get 安装 libav 我就可以省去很多麻烦,但由于这是一个学习过程,我认为我已经学到了很多东西。

相关内容