【问题标题】:pkg-config has different output in (Centos 7 & Fedora 28) and Debian 9pkg-config 在 (Centos 7 & Fedora 28) 和 Debian 9 中有不同的输出
【发布时间】:2018-09-27 14:09:18
【问题描述】:

我现在正在使用 pjsip 并发现了一个问题。安装此库后,我们得到以下文件 libpjproject.pc

# Package Information for pkg-config
prefix=/usr/local
exec_prefix=${prefix}
libdir=/usr/local/lib
includedir=/usr/local/include

Name: libpjproject
Description: Multimedia communication library
URL: http://www.pjsip.org
Version: 2.7.2
Libs: -L${libdir} -lpjsua2-x86_64-unknown-linux-gnu -lstdc++ -lpjsua-x86_64-unknown-linux-gnu -lpjsip-ua-x86_64-unknown-linux-gnu -lpjsip-simple-x86_64-unknown-linux-gnu -lpjsip-x86_64-unknown-linux-gnu -lpjmedia-codec-x86_64-unknown-linux-gnu -lpjmedia-x86_64-unknown-linux-gnu -lpjmedia-videodev-x86_64-unknown-linux-gnu -lpjmedia-audiodev-x86_64-unknown-linux-gnu -lpjmedia-x86_64-unknown-linux-gnu -lpjnath-x86_64-unknown-linux-gnu -lpjlib-util-x86_64-unknown-linux-gnu  -lsrtp-x86_64-unknown-linux-gnu -lresample-x86_64-unknown-linux-gnu -lgsmcodec-x86_64-unknown-linux-gnu -lspeex-x86_64-unknown-linux-gnu -lilbccodec-x86_64-unknown-linux-gnu -lg7221codec-x86_64-unknown-linux-gnu -lyuv-x86_64-unknown-linux-gnu -lwebrtc-x86_64-unknown-linux-gnu  -lpj-x86_64-unknown-linux-gnu -lssl -lcrypto -lm -lrt -lpthread  -lasound
Cflags: -I${includedir} -g -O2 -I/usr/local/include -DPJ_AUTOCONF=1 -O2 -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1

在与 RedHat 兼容的操作系统中,我在此命令上得到以下响应:

$ pkg-config --cflags --libs libpjproject
-lpjsua2 -lstdc++ -lpjsua -lpjsip-ua -lpjsip-simple -lpjsip -lpjmedia-codec -lpjmedia-videodev -lpjmedia-audiodev -lpjmedia -lpjnath -lpjlib-util -lwebrtc -lsrtp -lgsm -lspeex -lspeexdsp -lpj -lssl -lcrypto -luuid -lm -lrt -lpthread

因此,某些库 make 无法找到。

在 Debian 9 中,我看到同一命令的正常输出:

-g -O2 -DPJ_AUTOCONF=1 -O2 -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1 -I/usr/local/include -L/usr/local/lib -lpjsua2-x86_64-unknown-linux-gnu -lstdc++ -lpjsua-x86_64-unknown-linux-gnu -lpjsip-ua-x86_64-unknown-linux-gnu -lpjsip-simple-x86_64-unknown-linux-gnu -lpjsip-x86_64-unknown-linux-gnu -lpjmedia-codec-x86_64-unknown-linux-gnu -lpjmedia-x86_64-unknown-linux-gnu -lpjmedia-videodev-x86_64-unknown-linux-gnu -lpjmedia-audiodev-x86_64-unknown-linux-gnu -lpjmedia-x86_64-unknown-linux-gnu -lpjnath-x86_64-unknown-linux-gnu -lpjlib-util-x86_64-unknown-linux-gnu -lsrtp-x86_64-unknown-linux-gnu -lresample-x86_64-unknown-linux-gnu -lgsmcodec-x86_64-unknown-linux-gnu -lspeex-x86_64-unknown-linux-gnu -lilbccodec-x86_64-unknown-linux-gnu -lg7221codec-x86_64-unknown-linux-gnu -lyuv-x86_64-unknown-linux-gnu -lwebrtc-x86_64-unknown-linux-gnu -lpj-x86_64-unknown-linux-gnu -lm -lrt -lpthread

我的问题是如何使 CentOS 和 Fedora 上的输出与 Debian 相同? libpjproject.pc - 在两个操作系统上完全一样。

【问题讨论】:

    标签: pjsip pkg-config


    【解决方案1】:

    实际上,不同操作系统的包配置文件 - libpjproject.pc 不必相同,因为它们是根据系统(和用户)配置生成的.你没有描述你是如何得到这个文件的,因为代码库只包含它的模板:libpjproject.pc.inlibpjproject.pc 由 make install 目标生成。所以,我的猜测是你只是将它从一台机器复制到另一台机器上,但是它应该是生成的。

    因此,获取正确 .pc 文件的最简单方法是安装 pjproject:

    # Debian:
    sudo apt-get install libpjproject-dev
    # RedHat/Centos:
    sudo yum install libpjproject-devel
    

    注意 pkg-config 在输出默认系统标志和库中默认禁用,因此请尝试:

    $ export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1
    $ export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
    $ pkg-config --cflags --libs libpjproject
    

    Here 我发现在 Fedora 28 上 pkg-config 只是指向另一个类似工具 pkgconf 的符号链接(多么混乱!)。按照source code的说法应该是支持这两个环境变量,而且还支持两个命令行选项,效果一样,试试:

    $ pkg-config --cflags --libs --keep-system-cflags --keep-system-libs libpjproject
    

    【讨论】:

    • 我只是从源代码编译它然后进行安装。它会自动创建 libpjproject.pc。我在两个操作系统上都做了同样的事情。我没有复制任何东西。
    • @YevgenyTaradayko 好的,问题的关键在于你在构建之前是如何配置的。所以,请包括你的命令行 $./configure 和输出,是否有任何警告/错误?
    • @YevgenyTaradayko 请同时查看我关于默认标志的更新
    • 我使用 ./configure 没有任何参数。我唯一做的就是用 export CFLAGS += -fPIC -w export LDFLAGS += -fPIC -w 创建 user.mak 然后是标准命令:./configure, make dep, make, make install
    • 添加建议的导出变量后,我看到了 include 和 lib 文件夹。但仍然看不到其他标志,如 -O2 等。
    猜你喜欢
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    相关资源
    最近更新 更多