在具体的操作之前,首先需要安装一些必要的软件。
ubuntu下默认安装了gcc,不过缺少必要的Header file,可以在命令行中输入下面的指令安装build-essential套件:
sudo apt-get install build-essential
使用GTK+2.0需要安装GTK开发套件,在命令行中输入下面的指令安装GTK开发套件libgtk2.0-dev:
sudo apt-get install libgtk2.0-dev
安装完成后,可以使用pkg-config查看一下GTK的相关编译环境信息:
pkg-config --cflags --libs gtk+-2.0
ubuntu安装code::blocks可以在命令行中输入如下指令来完成:
sudo apt-get install codeblocks

程序helloworld.c演示了如何开启一个桌面的窗口程序。

#include <gtk/gtk.h>
int main(int args, char *argv[]) {
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();
return ;
}

helloworld.c

我们可以在命令行输入如下信息来编译该程序:
gcc -o helloworld helloworld.c `pkg-config --cflags --libs gtk+-2.0`
在命令行输入如下命令将会看到出现了一个窗口:
./helloworld

在code::blocks中创建一个Empty Project(在这里我给项目取名为"HelloWorld"),在项目中新建一个main.c文件,其中的内容和上面的helloworld.c文件的内容是一样的。此时运行HelloWorld项目并不能正常运行,在Build messages中会提示如下错误:
fatal error: gtk/gtk.h: No such file or directory
这是因为我们没有像之前编译helloworld.c程序时提供必要的参数`pkg-config --cflags --libs gtk+-2.0`。
打开项目所在目录下的HelloWorld.cbp文件(这个文件类似makefile,里面包含了项目相关的一些配置信息),在project项的compiler项中添加
<Add option="`pkg-config gtk+-2.0 --cflags`" />
在project项中添加Linker项
<Linker>
    <Add option="`pkg-config gtk+-2.0 --libs`" />
</Linker>
再次运行Helloworld项目,能够得到之前手工编译运行helloworld.c相同的一个窗口。
完整的HelloWorld.cbp代码(添加GTK参数后):

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="HelloWorld" />
<Option pch_mode="2" />
<Option compiler="gcc" />
<Build>
<Target title="Debug">
<Option output="bin/Debug/HelloWorld" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-g" />
</Compiler>
</Target>
<Target title="Release">
<Option output="bin/Release/HelloWorld" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Release/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
</Compiler>
<Linker>
<Add option="-s" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="`pkg-config gtk+-2.0 --cflags`" />
<Add option="-Wall" />
</Compiler>
<Linker>
<Add option="`pkg-config gtk+-2.0 --libs`" />
</Linker>
<Unit filename="main.c">
<Option compilerVar="CC" />
</Unit>
<Extensions>
<code_completion />
<debugger />
</Extensions>
</Project>
</CodeBlocks_project_file>

HelloWorld.cbp

学习资料:
Ubuntu 下安裝 GTK http://openhome.cc/Gossip/GTKGossip/GTKUnderUbuntu.html
编程语言:gtk程序设计简介 http://www.turbolinux.com.cn/turbo/wiki/doku.php?id=编程语言:gtk程序设计简介
GTK+2.0教程 http://runmediaprocess.googlecode.com/svn/trunk/dataBase/界面UI开发/GTK/GTK_2.0_Tutorial(中文版).pdf

ubuntu下code::blocks编译运行一个简单的gtk+2.0项目的更多相关文章

  1. ubuntu下使用code::blocks编译运行一个简单的gtk+2.0项目

    在具体的操作之前,首先需要安装一些必要的软件.ubuntu下默认安装了gcc,不过缺少必要的Header file,可以在命令行中输入下面的指令安装build-essential套件:sudo apt ...

  2. ubuntu下code::blocks设置运行窗口为gnome命令行

    code::blocks编译运行C++程序(F9)默认出现的运行串口在有鼠标的情况下进行粘贴还是很方便的,只要按下鼠标滑轮,位与剪切板中的数据就能粘贴到运行串口中.但是对于用笔记本而且没有鼠标地童鞋这 ...

  3. ubuntu15.10下code::blocks设置运行窗口为gnome命令行

    code::blocks编译运行C++程序(F9)默认出现的运行串口在有鼠标的情况下进行粘贴还是很方便的,只要按下鼠标滑轮,位与剪切板中的数据就能粘贴到运行串口中. 但是对于用笔记本而且没有鼠标地童鞋 ...

  4. Ubuntu下Code::Blocks无法编译 /bin/sh: 1: g++ not found 解决办法

    Linux下Code::Blocks无法编译运行提示 /bin/sh: 1: g++ not found 的解决办法 今天在Ubuntu 12.04 软件中心中选装了Code::Blocks,安装完成 ...

  5. JNI 在Android Studio利用NDK编译运行一个简单的c库

    NDK开发,其实是为了项目需要调用底层的一些C/C++的一些东西:另外就是为了效率更加高些.如果你在Eclipse+ADT下开发过NDK就能体会到要么是配置NDK还要下载Cygwin,配置Cygwin ...

  6. Ubuntu下编辑并编译运行c++程序

    一.使用vim编辑c++代码: vim hello.cpp 输入如下代码: #include <iostream> using namespace std; int main() { co ...

  7. ubuntu下code::blocks+opengl的使用与配置

    操作系统:Ubuntu 15.04 gcc version 4.9.2 opengl安装 sudo apt-get install build-essential libgl1-mesa-dev li ...

  8. ubuntu下cmake自动化编译的一个例子

    一个CMakeLists.txt的例子参考:https://www.hahack.com/codes/cmake/https://blog.csdn.net/afei__/article/detail ...

  9. ubuntu 下gcc的编译运行

    一些基本的操作 $gcc test.c //将test.c预处理.汇编.编译并链接形成可执行文件test $gcc test.c -o test //-o用来指定输出文件的文件名 $gcc -E te ...

随机推荐

  1. C++ test的使用

    http://www.parasoft.com/jsp/trial_request.jsp?itemId=303 去下载,原来是个商业的测试软件,还要去购买,这个成本太大了.. http://down ...

  2. Android中WebView与H5的交互,Native与JS方法互调

    项目中经常用到WebView与H5的交互,一个是H5调本地方法,一个是本地调H5方法,在此记录一下. 首先,启用JS支持 //启用js支持 webSettings.setJavaScriptEnabl ...

  3. Cocos2d-x 3.0final 终结者系列教程06-Director和场景跳转

    这些天互联网大事不少呀 1.逻辑思维分家(所谓合久必分,分久必合,实属正常.切行切珍惜吧) 2. 锤子手机开卖  (无论你买没买,反正我没买,作为多年Android开发的我深知说的亮点事实上在我看来都 ...

  4. 如何查看机器是否为vmware虚拟机

    vmware虚拟机的网卡MAC地址一般都是005056开头的,可用ifconfig看一下,也可用dmesg |grep vm查看 艺搜参考 http://bbs.chinaunix.net/threa ...

  5. IXWebHosting主机如何退款中文图解教程

    http://www.chinaz.com/web/2011/0630/192654.shtml ——————————————————————————————————————————————————— ...

  6. thinkphp openfire 添加用户 骨架

    public function addadd(){ header("Content-Type:text/html; charset=utf-8"); $user=$_POST['n ...

  7. 关于Unity中的删除、显示和隐藏节点

    一.删除节点和组件 1.删除一个节点,以及节点上面所有的组件全部删除了//删除一个节点的时候,节点上面所有的组件也会被删除:MonoBehaviour.Destroy(this.gameObject) ...

  8. 关于用Cocos2d-x.3.10运行别人游戏项目的步骤

    1.首先打开Cocos那个一体化软件. 2.创建工程,取名字,选择路径. 3.用VS2013打开新建的项目. 4.打开cocosdata(我自己放游戏项目的文件目录)的相应项目(自己刚创建的). 5. ...

  9. C# 窗体显示避免抢夺焦点

    通过调用API进行显示可以避免抢夺焦点的问题 以下是API调用 using System.Runtime.InteropServices; [DllImport("user32.dll&qu ...

  10. 常用CSS缩写语法总结(转)

    使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.css缩写的主要规则如下: 颜色 16进制的色彩值,如果每两位的值相同,可以缩写一半,例如:#000000可以缩写为#000;#336699可以缩 ...