Bash 环境变量包含 c 库的路径

Bash 环境变量包含 c 库的路径

我在主文件夹下构建了一个 C 库(从源代码编译而成),现在我必须构建一个依赖于该库的新包。运行 configure 脚本时,我收到错误
configure: error: The required <package> library was not found.

是否有一个环境变量可以编辑以使我的脚本搜索库的路径?

我已经尝试过了LD_LIBRARY_PATH

答案1

  • 许多库都使用 pkg-config,因此告诉它在哪里找到本地安装的.pc文件:

    导出PKG_CONFIG_PATH =“$本地/lib/pkgconfig:$本地/共享/pkgconfig”
    

    (系统范围的目录将被自动包含。)

    有时使用特定于库的命令而不是通用命令pkg 配置; 例如,krb5-配置。在本例中,指向您的bin目录:

    导出路径=“$本地/bin:$PATH”
    
  • 如果不使用 pkg-config,您将必须手动将编译器和链接器指向正确的位置。

    导出 CFLAGS="-I$本地/包括”     # 对于 C 编译器
    导出CXXFLAGS="-I$本地/包括”   # 对于 C++ 编译器
    导出LDFLAGS="-L$本地/lib”        # 对于链接器
    
  • ./configure --help通常会列出一系列选项,允许分别指定每个库的位置。--with-feature=...

    通常,./configure --help还会列出每个库的环境变量(例如CURL_CFLAGSCURL_LIBS);在帮助文本中查找“C 编译器标志”或“链接器标志”。

    如果您经常需要多个自定义库,这很快就会变得不方便;您应该一次为所有库指定 pkg-config 路径和 cflags。

  • 可能编译时还需要将加载程序指向库位置。对于 Linux,它将是:

    export LD_LIBRARY_PATH="$LOCAL/lib"
    

    这不应该是必要的,当跑步编译的程序;链接器将向编译的二进制文件本身添加正确的路径(如果您想检查,请查找“Library rpath”)。readelf -d yourprogram

    对于 Mac OS X,设置DYLD_LIBRARY_PATH应该具有类似的效果;otool可用于检查应用程序。


在上述所有示例中,$LOCAL将是您在安装库时使用的前缀;例如,如果您这样做了./configure --prefix ~/usr,那么在这里使用 ~/usr。

答案2

如果你还没有安装该库,你需要将它的包含路径传递给你的配置脚本,类似于这个问题

LD_LIBRARY_PATH编译后就会使用,因此您可以在运行时找到该库。

相关内容