我已经设法使用cygwin编译了一个gtk +应用程序,但不幸的是,使用这种方法,应用程序需要运行x windows才能启动。
如何编译我的gtk +应用程序以在Windows上本机运行。
我在网上看到有关使用-mno-cygwin
标记到gcc
的各种帖子,但这似乎已被弃用了?
我也在stackoverflow上看过这些帖子,但是如果他们正在尝试为X编译,或者本机地为Windows编译,则不清楚:
答案 0 :(得分:3)
应用程序需要使用MinGW而不是Cygwin进行编译。
我遵循的完整步骤列表:
1)下载MinGW
2)将MinGW安装到没有空格的文件夹中,例如到c:\ MinGW。
3)下载gtk +。即使我的机器是64位,我还是花了32位下载gtk +,因为64位下载页面上有兼容性警告。 GTK + Win32下载量为here。我去了all-in-one版本。
4)将gtk +提取到没有空格的文件夹,例如C:\ GTK
5)如果您还没有应用程序,可以使用gtk + hello world源代码。将其保存到文件夹,例如C:\ MyApp的\
6)打开Windows命令提示符并在步骤5中cd到该文件夹。
cd c:\myapp
7)在命令窗口中,将MinGW文件夹添加到Windows PATH,例如
c:\myapp> set PATH=c:\gtk\bin;%PATH%
8)在命令窗口中,将gtk +文件夹添加到Windows PATH,例如
c:\myapp> set PATH=c:\gtk\bin;%PATH%
9)创建一个脚本来编译你的应用程序,例如
C:\myapp> C:\MinGW\msys\1.0\bin\bash.exe -c "echo gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` > compile.bat"
请注意,我必须提供bash.exe的完整路径。出于某种原因,将c:\MinGW\msys\1.0\bin
添加到PATH并仅使用bash.exe
对我来说无效。
10)使用compile.bat编译你的应用程序,例如
c:\myapp> compile.bat
12)执行你的申请,例如
c:\myapp> helloworld.exe
编辑:
对于第9步,我们只是创建一个gcc
命令来使用正确的include和library选项设置来编译gtk +。
这是为我生成的compile.bat
的内容:
gcc -Wall -g helloworld.c -o helloworld -mms-bitfields -Ic:/DEV/gtk224/include/gtk-2.0 -Ic:/DEV/gtk224/lib/gtk-2.0/include -Ic:/DEV/gtk224/include/atk-1.0 -Ic:/DEV/gtk224/include/cairo -Ic:/DEV/gtk224/include/gdk-pixbuf-2.0 -Ic:/DEV/gtk224/include/pango-1.0 -Ic:/DEV/gtk224/include/glib-2.0 -Ic:/DEV/gtk224/lib/glib-2.0/include -Ic:/DEV/gtk224/include -Ic:/DEV/gtk224/include/freetype2 -Ic:/DEV/gtk224/include/libpng14 -Lc:/DEV/gtk224/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl
其中,pkg-config --cflags gtk+-2.0
创建的包含选项:
-mms-bitfields -Ic:/DEV/gtk224/include/gtk-2.0 -Ic:/DEV/gtk224/lib/gtk-2.0/include
-Ic:/DEV/gtk224/include/atk-1.0 -Ic:/DEV/gtk224/include/cairo
-Ic:/DEV/gtk224/include/gdk-pixbuf-2.0 -Ic:/DEV/gtk224/include/pango-1.0
-Ic:/DEV/gtk224/include/glib-2.0 -Ic:/DEV/gtk224/lib/glib-2.0/include
-Ic:/DEV/gtk224/include -Ic:/DEV/gtk224/include/freetype2
-Ic:/DEV/gtk224/include/libpng14
(注意我在上面添加了换行符以提高stackoverflow的可读性)
请注意pkg-config --cflags gtk+-2.0
已放置了我的gtk + include文件的完整路径(c:/ DEV / gtk224 / include /)。
由pkg-config --libs gtk+-2.0
生成的库选项:
-Lc:/DEV/gtk224/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0
-lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0
-lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl
(注意我在上面添加了换行符以提高stackoverflow的可读性)
请注意pkg-config --libs gtk+-2.0
已经放置了我的gtk库文件夹的完整路径(c:/ DEV / gtk224 / lib)。
有关pkg-config
的详情,请参阅GTK+ documentation