C++ gtkmm的编译问题
OS:Fedora 14 编译器:g++(GCC)4.5.1 20100924(Red Hat 4.5.1-4) 我通过yum从存储库安装了gtkmm24-devel。为了确保安装按计划进行,我决定尝试页面上的一个示例C++ gtkmm的编译问题,c++,eclipse,gtkmm,C++,Eclipse,Gtkmm,OS:Fedora 14 编译器:g++(GCC)4.5.1 20100924(Red Hat 4.5.1-4) 我通过yum从存储库安装了gtkmm24-devel。为了确保安装按计划进行,我决定尝试页面上的一个示例 #include <gtkmm.h> int main(int argc, char *argv[]) { Gtk::Main kit(argc, argv); Gtk::Window window; Gtk::Main::run(windo
#include <gtkmm.h>
int main(int argc, char *argv[]) {
Gtk::Main kit(argc, argv);
Gtk::Window window;
Gtk::Main::run(window);
return 0;
}
然后,我尝试使用#include
并重新编译来包含gtkmm,这是另一个错误!:(
感谢阅读。这些步骤通常有助于解决此问题:
- 在计算机上搜索glibmm.h
- 如果找到-将其目录添加到包含路径列表
- 如果找不到-并找出它包含在哪个库中。在本例中,您将发现它是(令人惊讶的!)glibmm。使用您的软件包管理器安装它
如注释中所述,问题是编译器错误,编译器正在争论缺少的(头)文件。我上面描述的步骤要么找到缺少的文件的位置,要么帮助您安装头文件所属的库。简短回答 将'pkg config gtkmm-2.4--cflags'的输出用于包含路径,将'pkg config gtkmm-2.4--libs'的输出用于库链接 长答案 它说找不到gtkmm.h,没问题,我只是忘了链接库 构建C/C++程序分为两个独立的步骤。首先编译源文件,输出目标文件;然后将目标文件链接在一起。您遇到的错误来自编译步骤 在Linux上,大多数库都附带了pkgconfig文件,以便于其他程序使用这些库。gtkmm还附带了自己的pkgconfig文件 您试图手动为include path指定/usr/include/gtkmm-2.4;这是错误的。请使用pkgconfig的输出找出头文件的位置。要获取gtkmm所需的所有include目录,请使用以下命令:
pkg-config gtkmm-2.4 --cflags
要进行链接,请使用以下pkgconfig命令获取需要链接的库:
pkg-config gtkmm-2.4 --libs
您可以通过直接调用g++在命令行上对其进行测试
g++ myfirstprogram.cpp -o myfirstprogram `pkg-config gtkmm-2.4 --cflags --libs`
有关更多信息,请参阅gtkmm文档:这不是“链接”错误。这是“编译器”错误。这是一个很大的区别。很抱歉,在系统编程方面,我还是个新手。我将添加我的编译器和版本。我已经安装了库及其路径(/usr/lib),但错误仍然存在:(看来安装这些库只会给我提供共享对象(.so)。Boost也有同样的问题,经过一段时间的思考后,我求助于从源代码处编译它(源代码为我提供了所需的正确标题),我希望避免这种情况,并了解我到底做错了什么,但如果有必要,我会这样做。请注意,您必须安装库的开发版本才能获取头文件。这些头文件通常在其包名中标记为-dev扩展名。包glibmm24-devel-2.24.2-1.fc14.1.i686已安装且最新版本和你能在你的系统上找到头文件吗?嗨,kavel。我发现你的答案对帮助我编译我的项目非常有帮助,但我仍然在链接方面遇到困难。你愿意在这里帮助我回答我的问题吗()?非常感谢!
pkg-config gtkmm-2.4 --libs
g++ myfirstprogram.cpp -o myfirstprogram `pkg-config gtkmm-2.4 --cflags --libs`