如何在 Ubuntu 中使用 GTK+ 开发库?

如何在 Ubuntu 中使用 GTK+ 开发库?

我在 Windows 上编程已有大约一年半了,我刚刚开始习惯该平台上的工作方式,但现在我对 Linux 上的开发很感兴趣,而且我一直很难适应工作流程、缺乏 IDE 以及使用 GCC 进行命令行编译。顺便说一下,我正在运行 Xubuntu 13.10 64 位。

为了试水,我做了许多人都会做的事情,编写了一个快速的 C++“hello world”程序。

#include <iostream>

int main()
{
    std::cout << "Hello!\n";
    return 0;
}

我的第一个问题是;当我尝试使用 GCC 编译该程序时,它似乎出现编译错误,但当我使用 G++ 编译器时,它可以正常编译:

gcc hello.cpp -o hello
/tmp/ccbmUmzf.o: In function `main':
hello.cpp:(.text+0xa): undefined reference to `std::cout'
hello.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/tmp/ccbmUmzf.o: In function `__static_initialization_and_destruction_0(int, int)':
hello.cpp:(.text+0x3d): undefined reference to `std::ios_base::Init::Init()'
hello.cpp:(.text+0x4c): undefined reference to `std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status

这是怎么回事?GCC 无法识别我的代码是 C++ 还是别的什么?

我的第二个问题是尝试使用库:我以为 GTK+3.0 开发库包含在 (X)ubuntu 中,但当我尝试按照简单的教程这里,我从 G++ 收到以下错误:

g++ hello.cpp -o hello
hello.cpp:1:21: fatal error: gtk/gtk.h: No such file or directory
 #include <gtk/gtk.h>
                     ^
compilation terminated.

因此,我将其解释为未安装 GTK+3.0 的库。因此,我检查了 apt-get,但没有看到任何我需要的东西。我是否必须从源代码构建 GTK+3.0,或者是否存在我需要的 PPA??

这些问题真的让我很沮丧。我知道很多人都对 GNU/Linux 开发工作流程深信不疑,但作为一个习惯使用 Visual Studio 的人,我发现这个过程有点不透明和不直观。现在我在 Xubuntu 上使用 Mousepad 编辑我的代码,虽然它有颜色编码的语法,但除此之外似乎没有什么用。我知道最终我将不得不处理多个文件并创建 makefile,而此时,我对此感到恐惧!

无论您是否能为新手程序员和 Linux/GNU 菜鸟提供任何帮助,我们都非常欢迎!

答案1

建议

首先,您不必满足于没有 IDE。安装 Eclipse,它可以在 Ubuntu 软件中心找到。您还需要安装 CDT for Eclipse,它为您提供 C/C++ 支持。其次,我强烈建议您专注于 C++ 和 Qt,而不是 C 和 GTK。Qt 是一个使用 C++ 和 QML(一种类似 JavaScript 的 UI 语言)的出色跨平台框架,Ubuntu 越来越多地将 Qt 用于其未来的桌面和移动开发。这些工具不仅允许您为 Ubuntu 桌面创建漂亮的应用程序,还允许您为 Android、Windows、Mac、BlackBerry 和其他操作系统创建漂亮的应用程序。一个出色的 Qt 专用 IDE 是 QtCreator,也可以在 Ubuntu 软件中心找到,您应该查看一些 Qt 教程。

回答

直接回答你的问题,尽管我强烈建议你按照上面概述的步骤操作,但你可能需要使用 -dev 版本的库。对于 GTK 3,你可能需要:

sudo apt-get install libgtk-3-dev

这应该会为你提供所有 GTK 3 标头。

相关内容