标签: pkg-config

为什么 pkg-config --cflags openssl 在 RHEL 6.8 上不返回任何内容?

我在 RHEL 6.8 Linux 机器上运行。我正在寻求从源 tarballs/git-repos/whatefer 构建各种包,而无需更改系统配置(在 root 或 sudo 下)。

我在 RHEL 6.8 机器上运行:

bash-4.1$ cat /etc/issue
Red Hat Enterprise Linux Workstation release 6.8 (Santiago)
Kernel \r on an \m
Run Code Online (Sandbox Code Playgroud)

openssl-devel 已安装:

bash-4.1$ rpm -q -a | grep openssl
openssl-1.0.1e-48.el6.i686
openssl098e-0.9.8e-20.el6_7.1.x86_64
openssl098e-0.9.8e-20.el6_7.1.i686
openssl-devel-1.0.1e-48.el6.i686
openssl-1.0.1e-48.el6.x86_64
openssl-devel-1.0.1e-48.el6.x86_64
Run Code Online (Sandbox Code Playgroud)

所以我希望这个命令返回一些输出,这样当我从使用 pkg-config 的源构建包时,他们会找到他们需要的 CFLAGS 的值:

bash-4.1$ pkg-config --cflags openssl
Run Code Online (Sandbox Code Playgroud)

但它只返回一个换行符。为什么?

进一步调试:

显示正在使用的文件:

bash-4.1$ pkg-config --debug --list-all 2>&1 | grep 'Will find package.*openssl'
Will find package 'openssl' in file '/usr/lib64/pkgconfig/openssl.pc'
Run Code Online (Sandbox Code Playgroud)

显示它应该读取的文件:

bash-4.1$ cat …
Run Code Online (Sandbox Code Playgroud)

rhel openssl pkg-config

4
推荐指数
1
解决办法
3659
查看次数

/etc/ld.so.conf 不包含 /usr/lib

pkg-config用来帮助在 C++ 编译期间提供正确的库。据我了解,它会在/etc/ld.so.conf. 我ld.so.conf通过指向的包含指令引用了以下库位置/etc/ld.so.conf.d/*.conf

/usr/local/lib
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
Run Code Online (Sandbox Code Playgroud)

问题是我需要的库在/usr/lib默认情况下。

我可以将这条路径添加到/etc/ld.so.conf自己或移动库或推荐的做法是什么?

libraries path pkg-config

3
推荐指数
1
解决办法
5441
查看次数

我应该安装 ibus-1.0 来构建 Webdriver 吗?

构建一个库(Webdriver)的过程中,我收到以下错误:

Package ibus-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `ibus-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'ibus-1.0' found
Run Code Online (Sandbox Code Playgroud)

似乎是因为 Webdriver 源代码中的以下行:

pkg-config ibus-1.0 --libs
Run Code Online (Sandbox Code Playgroud)

当我运行它时会产生相同的输出。

所以我ibus 使用其网站上的安装说明进行安装

sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4
Run Code Online (Sandbox Code Playgroud)

但是在调用pkg-config ibus-1.0 --libs. 我应该安装 ibus 1.0 来构建那个库吗?如果是,我在哪里可以找到它?ibus 的下载列表中似乎没有它?

我的操作系统是 Ubuntu 13.04

compiling ubuntu libraries pkg-config

3
推荐指数
1
解决办法
400
查看次数

Fish 中使用 pkg-config 命令替换

Fish 的命令替换应该与 Bash 的命令等效$(),但这个简单的示例失败了:

g++ -std=c++14 -Wall -Wextra -pedantic -g (pkg-config --cflags sdl2) \
    test.cpp (pkg-config --libs sdl2)
/usr/bin/ld: cannot find -lSDL2
Run Code Online (Sandbox Code Playgroud)

如果我在 Bash 中运行它,它工作得很好。也可以用打字-lSDL2代替使用pkg-config

澄清一下,没有什么问题pkg-config

echo (pkg-config --libs sdl2)
-lSDL2
Run Code Online (Sandbox Code Playgroud)

为什么这对 Fish 不起作用?

shell fish command-substitution pkg-config

3
推荐指数
1
解决办法
572
查看次数

如何知道命令在我的 Linux 发行版中是否可用

我们正在为我们的 USB 产品提供一些 linux 的驱动程序。在我们的驱动程序代码中,为了使其独立于发行版,我们必须动态获取发行版名称,并在运行时查找每个目标发行版中是否有可用的库。

为此,我们需要运行一些命令,如 ldconfig、pkg-config 等。这个问题与this相关。因此,根据答案,某些发行版可能有命令,并且在执行这些命令之前找出这些命令在发行版中是否可用总是好的。

所以问题是找出这些命令是否可用。我正在考虑检查可执行文件是否存在。例如,

if [ -f /usr/bin/pkg-config ] ; then
Run Code Online (Sandbox Code Playgroud)

还有其他更好的方法来做到这一点吗?

linux libraries pkg-config

1
推荐指数
1
解决办法
67
查看次数

从源代码安装 deja-dup 的一些麻烦

(学习如何在 linux 上安装程序...)

deja-dup 源代码可以在其 GitHub 存储库上下载。有一个makefile con 包。一旦进入我运行的文件夹:

santi@eoan:~/deja-dup$ make
Run Code Online (Sandbox Code Playgroud)

并得到错误:

The Meson build system

Project name: deja-dup
Project version: 40.6
...
   Run-time dependency goa-1.0 found: NO (tried pkgconfig and cmake)
    Run-time dependency json-glib-1.0 found: NO (tried pkgconfig and cmake)
    meson.build:36:0: ERROR: Dependency "json-glib-1.0" not found, tried pkgconfig and cmake


A full log can be found at /home/santi/deja-dup/builddir/meson-logs/meson-log.txt
make: *** [Makefile:15: configure] Error 1
Run Code Online (Sandbox Code Playgroud)

我正在运行 lubuntu eoan,其中 deja-dup 已更新,或几乎已更新。我想知道出了什么问题以供将来参考。

source make software-installation pkg-config cmake

0
推荐指数
1
解决办法
252
查看次数