首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pkg-config有不同的输出(Centos 7& Fedora 28)和Debian 9。

pkg-config有不同的输出(Centos 7& Fedora 28)和Debian 9。
EN

Stack Overflow用户
提问于 2018-09-27 14:09:18
回答 1查看 487关注 0票数 1

我现在和pjsip一起工作,发现了一个问题。安装此库后,我们将得到以下文件libpjproject.pc

代码语言:javascript
复制
# 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兼容的OSs中,我得到以下命令的响应:

代码语言:javascript
复制
$ 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

由于这一点,一些库制作无法找到。

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

代码语言:javascript
复制
-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 --在两个OSes上完全一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-05 22:13:57

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

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

代码语言:javascript
复制
# Debian:
sudo apt-get install libpjproject-dev
# RedHat/Centos:
sudo yum install libpjproject-devel

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

代码语言:javascript
复制
$ export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1
$ export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
$ pkg-config --cflags --libs libpjproject

这里,我发现在Fedora 28 pkg-config上,它只是一个指向另一个类似工具pkgconf的符号链接(多么混乱!)根据源代码,它应该支持这两个环境变量,但也支持两个效果相同的命令行选项,因此请尝试:

代码语言:javascript
复制
$ pkg-config --cflags --libs --keep-system-cflags --keep-system-libs libpjproject
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52539014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档