无法在 Fedora Eclipse 上构建 GTK+ Windows 应用程序

Posted

技术标签:

【中文标题】无法在 Fedora Eclipse 上构建 GTK+ Windows 应用程序【英文标题】:Can not build GTK+ Windows application on Fedora Eclipse 【发布时间】:2013-06-19 12:01:49 【问题描述】:

我尝试使用 MinGW 在 Fedora x64 Eclipse 上为 Windows x86 构建一个非常简单的应用程序。 应用程序编译良好,但是无法链接。我的链接命令如下:

i686-w64-mingw32-g++ `mingw32-pkg-config --libs gtk+-2.0` -o "GtkTest"  ./main.o

当我运行 mingw32-pkg-config --libs gtk+-2.0 时,输出如下:

-Wl,-luuid -L/usr/i686-w64-mingw32/sys-root/mingw/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -limm32 -lshell32 -lole32 -latk-1.0 -lpangocairo-1.0 -lgio-2.0 -lgdk_pixbuf-2.0 -lpangoft2-1.0 -lpangowin32-1.0 -lgdi32 -lfreetype -lfontconfig -lpango-1.0 -lm -lcairo -lgobject-2.0 -lglib-2.0 -lintl

毫无疑问存在文件夹和库文件。但是,我收到以下错误:

./main.o:main.cpp:(.text.startup+0x3e): undefined reference to `gtk_init_abi_check'
./main.o:main.cpp:(.text.startup+0x43): undefined reference to `gtk_builder_new'
./main.o:main.cpp:(.text.startup+0x3d): undefined reference to `gtk_builder_add_from_file'
./main.o:main.cpp:(.text.startup+0x46): undefined reference to `gtk_widget_get_type'
./main.o:main.cpp:(.text.startup+0x58): undefined reference to `gtk_builder_get_object'
./main.o:main.cpp:(.text.startup+0x64): undefined reference to `g_type_check_instance_cast'
./main.o:main.cpp:(.text.startup+0x76): undefined reference to `gtk_builder_connect_signals'
./main.o:main.cpp:(.text.startup+0x86): undefined reference to `g_type_check_instance_cast'
./main.o:main.cpp:(.text.startup+0x8e): undefined reference to `g_object_unref'
./main.o:main.cpp:(.text.startup+0x96): undefined reference to `gtk_widget_show'
./main.o:main.cpp:(.text.startup+0x9b): undefined reference to `gtk_main'
./main.o:main.cpp:(.text.startup+0xcb): undefined reference to `g_log'
./main.o:main.cpp:(.text.startup+0xd7): undefined reference to `g_free'

所以,看起来链接器根本看不到库,即使它们存在,我在命令行中引用它们。 可能是什么原因?

【问题讨论】:

尝试在pkg-configi686-w64-mingw32-g++ ./main.o `mingw32-pkg-config --libs gtk+-2.0` -o "GtkTest"之前移动对象文件,看看是否有帮助 【参考方案1】:

您缺少--cflags,但最重要的是,订单is wrong。查看Tor Lillqvist's suggestion 了解正确的标志排序。

【讨论】:

嗨,为什么我需要 --cflags 作为链接器?我认为 --cflags 用于编译器(编译器标志)。

以上是关于无法在 Fedora Eclipse 上构建 GTK+ Windows 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

无法构建 R 包“png”Fedora 20

在 Fedora 21 上构建对接

Linux 终端与蚀

如何在fedora上从eclipse制作一个jar文件?

如何使用 Eclipse CDT 构建 SCons 项目?

无法在 Fedora 上连接冰淇淋 (icecc)