gtk程序编译和链接过程
来源:互联网 发布:sdl fcc amc输出数据 编辑:程序博客网 时间:2024/06/05 11:35
最近在调查GTK程序,
发现编译和运行都不是很顺利。
按照例子写了一个hello程序后,
编译过不去,出现错误
我编译的命令如下:#gcc testgtk.c -o gtk1
错误如下:testgtk.c:1:21: error: gtk/gtk.h: 没有该文件或目录
在百度上找了一些帖子,
告诉我要这样编译#gcc testgtk.c -o gtk1 `pkg-config --cflags --libs gtk+-2.0`
pkg-config是一个工具,用来解决编译和链接有文件和库文件不一致的问题。
它提供的主要功能有:
<1> 检查库的版本号。如果所需库的版本不满足要求,打印出错误信息,避免连接错误版本的库文件。
<2> 获得编译预处理参数,如宏定义,头文件的路径。
<3> 获得编译参数,如库及其依赖的其他库的位置,文件名及其他一些连接参数。
<4> 自动加入所依赖的其他库的设置。增加了这个编译参数后,编译就通过了。
下面就开始运行了:
执行#./gtk1运行时提示Gtk-WARNING **:
cannot open display然后找到一篇解决这个问题的文章,
增加环境变量#export DISPLAY=:0.0
然后接换到普通用户,这个还没弄明白为什么
原文如下:Gtk-WARNING **: cannot open display2008-04-07 00:09
转载:你在为“Gtk-WARNING **: cannot open display:”烦恼吗?2007-12-06 15:00
转载地址:http://unix-cd.com/unixcd12/article_6842.html 正文:
在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处.
直接登陆图形界面或者登陆命令行界面后使用startx启动图形,
DISPLAY环境变量将自动设置为:0:0, 此时可以打开终端, 输出图形程序的名称(比如xclock)来启动程序,
图形将显示在本地窗口上, 在终端上输入printenv查看当前环境变量, 输出结果中有如下内容:
DISPLAY=:0.0 使用xdpyinfo可以查看到当前显示的更详细的信息. DISPLAY 环境变量格式如下host:NumA.NumB, host指Xserver所在的主机主机名或者ip地址, 图形将显示在这一机器上, 可以是启动了图形界面的Linux/Unix机器, 也可以是安装了Exceed, X-Deep/32等Windows平台运行的Xserver的Windows机器. 如果Host为空, 则表示Xserver运行于本机, 并且图形程序(Xclient)使用unix socket方式连接到Xserver, 而不是TCP方式. 使用TCP方式连接时, NumA为连接的端口减去6000的值, 如果NumA为0, 则表示连接到6000端口; 使用unix socket方式连接时则表示连接的unix socket的路径, 如果为0, 则表示连接到/tmp/.X11-unix/X0 . NumB则几乎总是0. 如果使用su username或者su - username切换到别的用户, 并且使用命令export DISPLAY=:0.0 设置DISPLAY环境变量, 运行图形程序(如xclock)时会收到如下错误: Xlib: connection to ":0.0" refused by serverXlib: No protocol specifiedError: Can't open display: :0.0 这是因为Xserver默认情况下不允许别的用户的图形程序的图形显示在当前屏幕上. 如果需要别的用户的图形显示在当前屏幕上, 则应以当前登陆的用户, 也就是切换身份前的用户执行如下命令xhost + 这个命令将允许别的用户启动的图形程序将图形显示在当前屏幕上. 在2台Linux机器之间, 如果设置服务器端配置文件/etc/ssh/sshd_config中包含X11Forwarding no 客户端配置文件/etc/ssh/ssh_config包含ForwardX11 yes 则从客户端ssh到服务器端后会自动设置DISPLAY环境变量, 允许在服务器端执行的图形程序将图形显示在客户端上. 在服务器上查看环境变量显示如下(这个结果不同的时候并不相同)DISPLAY=localhost:10.0 在客户机上用netstat -lnp可以看到有程序监听了6010端口tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 4827/1 如 果希望允许远程机器上的图形程序将图形显示在本地机器的Xserver上, 除了要设置远端机器的DISPLAY环境变量以外, 还需要设置本地机器的Xserver监听相应的TCP端口. 而现在的Linux系统出于安全的考虑, 默认情况下不再监听TCP端口. 可通过修改/etc/X11/xinit/xserverrc文件, 将exec /usr/bin/X11/X -dpi 100 -nolisten tcp 修改为exec /usr/bin/X11/X -dpi 100 允许在直接使用startx启动图形时启动对TCP端口的监听. 修改/etc/kde3/kdm/kdmrc, 将ServerArgsLocal=-nolisten tcp 修改为ServerArgsLocal= 允许kdm作为显示管理器时, 启动会话时监听相应的TCP端口. 修改/etc/gdm/gdm.conf, 在[Security]一节增加DisallowTCP=false 或者在登陆窗口选择"Options" -> "Configure Login Manager..."
- gtk程序编译和链接过程
- c程序的编译和链接过程
- 程序的编译和链接过程
- 程序的编译和链接过程
- 程序编译,链接过程
- 程序编译,链接过程
- 程序编译,链接过程
- 程序编译,链接过程
- eclipse 下用CDT插件开发gtk+程序的编译和链接设置
- make和makefile以及程序的编译和链接过程
- 程序的编译链接过程
- 程序的链接+编译过程
- 程序的编译链接过程
- 程序编译、链接简单过程
- gtk的安装和gtk程序的编译
- C语言程序的编译和链接过程
- C语言程序的编译和链接过程
- C语言程序的编译和链接过程
- 模式设计详解-传统的面向对象的缺点
- 创建AVD 中文路径错误错误- 之另类修改方式
- 第一篇
- 1129: Divisibility
- VC中编译有C源文件的程序
- gtk程序编译和链接过程
- Eclipse中serialVersionUID问题陈述及解决方案
- css滤镜之light实现的灯光效果.
- s60 2nd/3rd开发小贴士
- 转 waveOutWrite函数介绍
- Linux内核修炼之道
- Pyke 逻辑编程入门(3):模式匹配
- UVa 548 Tree
- CSS滤镜笔记------包含Light滤镜方法的使用