pkg-config命令的Makefile.am

 

举例:通过Makefile调用pkg-config命令。

pkg-config - Return metainformation about installed libraries

(为了使用lib库,通过pkg-config生成必要的编译options)

Makefile中的例:

CFLAGS = `pkg-config --cflags gtk+-2.0` 
LDFLAGS = `pkg-config --libs-only-L gtk+-2.0` 
LIBS = `pkg-config --libs-only-l gtk+-2.0`

其中的 ` 符号,不是单引号。而是和~符号为同一按键的那个符号!!!# ``

Makefile.am中的例:

AM_CFLAGS = `pkg-config --cflags gtk+-2.0` 
AM_LDFLAGS = `pkg-config --libs gtk+-2.0`

已经登录的lib库的列表表示

$ pkg-config --list-all

这里使用了程序 pkg-config,可以从 www.freedesktop.org 得到。这个程序读取 GTK 附带的 .pc 文件来决定编译 GTK 程序需要的编译选项

gtk+-2.0.pc文件的位置是

Cygwin的话      :/lib/pkgconfig/gtk+-2.0.pc
Linux(ubuntu)的话:/usr/lib/pkgconfig/gtk+-2.0.pc

C是一种编译语言, 需要使用gcc编译器把源代码转换为二进制可执行代码。
为了让gcc知道GTK+链接库位置以及编译标识,我们使用pkg‐config。

当我们安装GTK+开发包时, 一个叫"gtk+-2.0.pc"的配置文件也安装了, 它告诉pkg‐config我们系统上安装的GTK+库版本以及包含文件位置等信息。

lb@ubuntu:~$ pkg-config --modversion gtk+-2.0
2.18.3 lb@ubuntu:~$ 

终端输出将是你安装的GTK+版本号。

现在来看编译GTK+应用程序时需要的编译器标识:

lb@ubuntu:~$ pkg-config --cflags gtk+-2.0
-D_REENTRANT -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include lb@ubuntu:~$ 

输出将是一堆的 ‐I 开关选项指出编译器使用的包含文件。
这能让gcc知道到哪去找我们应用程序中"#include"所列出的包含文件。
每当使用了"#include"并引用了非标准C库头文件时, 都需要使用"I/path/to/library"选项传
给gcc。这些库可以装在不同的地方,这根据分发要求,操作系统或使用者意愿来定。
而pkg‐config为我们掌控这一切。

lb@ubuntu:~$ pkg-config --libs gtk+-2.0
-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lgio-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 lb@ubuntu:~$ 

-l 连接库文件。

补充:

pkg-config --cflags gmodule-2.0
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include lb@ubuntu:~$ pkg-config --libs gmodule-2.0 -Wl,--export-dynamic -lgmodule-2.0 -lglib-2.0

转载于:https://www.cnblogs.com/sddai/p/10364298.html

如果在安装 Podman 时遇到 "Package libseccomp was not found in the pkg-config search path" 错误,这可能意味着缺少 libseccomp 的开发包。您可以按照以下步骤解决这个问题: 1. 确保您的系统已经安装了 libseccomp 的开发包。运行以下命令来安装它: ``` sudo yum install libseccomp-devel ``` 2. 如果您已经安装了 libseccomp 的开发包但仍然遇到此错误,请检查 pkg-config 是否正确配置。运行以下命令来确认 pkg-config 是否可以找到 libseccomp: ``` pkg-config --cflags --libs libseccomp ``` 如果命令输出了正确的路径和选项,那么可能是其他问题导致错误。否则,请继续下一步。 3. 检查 pkg-config 的配置文件是否包含 libseccomp 的正确路径。运行以下命令来查看 pkg-config 的搜索路径: ``` pkg-config --variable pc_path pkg-config ``` 输出应该类似于 "/usr/lib/pkgconfig:/usr/share/pkgconfig"。 4. 确保 libseccomp 的 pkg-config 文件位于正确的路径中。运行以下命令来查找 libseccomp 的 pkg-config 文件: ``` find /usr/lib/pkgconfig -name "libseccomp.pc" ``` 如果找不到该文件,或者它位于其他路径,请将其移动到正确的位置。 5. 如果您修改了 pkg-config 的配置文件或将 libseccomp 的 pkg-config 文件移动到其他路径,请运行以下命令来刷新 pkg-config 的缓存: ``` pkg-config --flush ``` 重新尝试安装 Podman,看看是否仍然遇到相同的错误。如果问题仍然存在,请提供更多详细的错误信息,以便我可以更好地帮助您解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值