用pkg给手机装linux,使用automake将pkg-config文件安装到CentOS上的正确路径

我有几个使用automake构建的项目(让我们称之为lib1和lib2). lib2依赖于lib1作为库,我在CentOS上遇到pkg-config默认值的问题.理想情况下,我希望用户不必设置任何环境变量来正确安装所有内容.

现在,它只是假设${PREFIX} / lib / pkgconfig作为我的.pc文件的目的地,但在CentOS 7上,${PREFIX}的默认值是/usr/local,但pkgconfig默认只查看/usr/share / pkgconfig和/usr/lib64 / pkgconfig.因此,lib2无法找到带有pkg-config的lib1,并且配置脚本会爆炸.

所以,问题是,我的lib1中的“make install”如何正确检测安装pkg-config文件的目录?

来自man pkg-config

PKG_INSTALLDIR(DIRECTORY)

Substitutes the variable pkgconfigdir as the location where a module should install pkg-config .pc files. By default the

directory is $libdir/pkgconfig, but the default can be changed by passing DIRECTORY. The user can override through the

--with-pkgconfigdir parameter.

这允许您将pkg-config文件的install-directory公开给用户(并且 – 如果您的发行版修补了pkg-config以使用非标准搜索路径,则希望为您的系统选择正确的默认值).

例:

configure.ac:

[...]

PKG_INSTALLDIR

[...]

Makefile.am:

[...]

pkgconfig_DATA = lib1.pc

[...]

用法

$./configure --prefix=/usr --with-pkgconfigdir=/usr/lib64/pkgconfig

注意

请不要对pkg-config查找文件的位置做出特定于发行版的假设.

始终使用默认值(出于正当理由它们是默认值),并提供一种方法来覆盖非标准系统的这些默认值.

那里有很多分布,只是因为在我的社区中有一个流行,这并不意味着其他社区(或不会改变)也是如此.

如果您的发行版不符合标准,那么它应该是一致的;如果它不能保持一致(例如pkg-config在/ foo / baz中查找文件,但PKG_INSTALLDIR将pkgconfigdir扩展到/usr/lib / pkg-config),那么您应该在您的发行版中报告错误.

另外我觉得相当奇怪,你的pkg-config不会搜索/usr/local中的文件.

例如.在我的Debian / sid系统上,它先搜索/usr/local然后搜索/ usr:

$which pkg-config

/usr/bin/pkg-config

$strace -e trace=open pkg-config --cflags foo 2>&1 | grep /usr

open("/usr/local/lib/x86_64-Linux-gnu/pkgconfig", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

open("/usr/local/lib/pkgconfig", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

open("/usr/local/share/pkgconfig", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

open("/usr/lib/x86_64-Linux-gnu/pkgconfig", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3

open("/usr/lib/pkgconfig", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3

open("/usr/share/pkgconfig", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3

$

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值