Linux 编程,在终端输入`gtk-config --cflags --libs`可以成功,用`pkg-config --cflags --libs`不行

wsGinger 2015-06-09 05:30:51
#include<gtk/gtk.h>
int main(int argc,char*argv[])
{
GtkWidget*window;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();
return FALSE;
}

在终端输入gcc -o base.o base.c `gtk-config --cflags --libs`可以成功,但是书上和网上都说用`pkg-config --cflags --libs`,我试了却不行,提示 没有gtk/gtk.h文件
...全文
1331 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hchen90 2015-07-07
  • 打赏
  • 举报
回复
pkg-config 是一个通用包连接相关库管理工具,你要使用pkg-config,必须系统要安装好这个工具,可以到: http://www.freedesktop.org/wiki/Software/pkg-config 他是freedesktop下的软件。 下载他的源代码,解压,执行./configure,可以`./configure --help'查看一下他的参数说明, 我的slackware,直接,`./configure --prefix=/usr --libdir=/usr/lib64‘ 这里--libdir的参数一定不能错,否则,会找不到pkgconfig这个目录下的库文件信息配置文件。 比如一般64位的系统通常在lib64目录下,32位的lib目录下,但各个发行版本多有所不同。 如果是Debain,Red Hat等这类编译好了的二进制包安装,你可以先下载包(如RPM),或用据如 YUM,APT,这类工具,都可以闭着眼睛输入'pkg-config'来下载安装的。 其实,你有'gtk-config'这个工具也已经足够了。你编译的目的是把库编译到你的程序中,而在裤目 录下所有以lib*开头的库,大部分都可以直接用gcc来直接连接。就比如:加`-lopenssl‘这个,就 是把openssl对应的库编译到程序中(libssl.a)。 `gtk-config'是GTK3里面的一个工具,‘pkg-config’和`gtk-config‘的运作机制多时相似,就是 找出要动态加载的库都加到程序编译中去,`-l{库文件}',再把要包含的头文件加上去,`-I{头文件目录}‘ 你甚至都不用这个工具就可编译gtk小程序,`-I{这里添GTK头文件目录} -lgtk+-2.0 -lglib-2.0 -lgobject-2.0‘ 如果调用库少好办,但是调用许多库时,将变得非常棘手,因为有的库是不相容的,比如`-lgtk+-3.0‘来启用 GTK3.0特性,却又加了'-lgio-2.0',GTK2.0上的参数,将会导致程序无法,即使代码一点错误都没有。 所以这时,pkg-config或gtk-config发挥作用了,这些工具自动添加参数,自动帮你导入库等参数,库冲突它来解决。
大熊猫侯佩 2015-07-06
  • 打赏
  • 举报
回复
看看`pkg-config --cflags --libs`返回的是啥,应该是缺少include path
zhxianbin 2015-06-23
  • 打赏
  • 举报
回复
WizardOz 2015-06-22
  • 打赏
  • 举报
回复
用法不对: pkg-config --cflags --libs gtk+-2.0 后面一定要跟你用的库的名字。
wsGinger 2015-06-09
  • 打赏
  • 举报
回复
我用的是red hat Linux系统,在虚拟机上安的,刚刚学Linux,还不是很懂,拜托大神可以给我讲讲

2,161

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 UNIX文化
社区管理员
  • UNIX文化社区
  • 文天大人
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧