IBM AIX 7.1 无法使用 gtk2-2.24.30-2 进行编译
IBM AIX 7.1 unable to compile with gtk2-2.24.30-2
我尝试在我的 IBM AIX7.1 上从 AIX Toolbox 为 Linux 应用程序安装 GTK2。它为我提供了 gtk2-2.24.30-2waixX11,所以我通过 rpm -i 安装了它。
现在我只有简单的空 main.c,它只包含 GTK2。
#include <gtk/gtk.h>
int main (int argc, char *argv[])
{
return 0;
}
当我尝试编译示例时,使用:
gcc -maix64 main.c `pkg-config --cflags gtk+-2.0`
它 returns 我一个错误:
In file included from /usr/include/sys/thread.h:41:0,
from /usr/include/sys/ptrace.h:28,
from /usr/include/sys/proc.h:42,
from /usr/include/sys/pri.h:43,
from /usr/include/sys/sched.h:38,
from /usr/include/sched.h:51,
from /usr/include/pthread.h:63,
from /home/run/tools/include/glib-2.0/glib/deprecated/gthread.h:128,
from /home/run/tools/include/glib-2.0/glib.h:108,
from /home/run/tools/include/glib-2.0/gobject/gbinding.h:28,
from /home/run/tools/include/glib-2.0/glib-object.h:23,
from /home/run/tools/include/glib-2.0/gio/gioenums.h:28,
from /home/run/tools/include/glib-2.0/gio/giotypes.h:28,
from /home/run/tools/include/glib-2.0/gio/gio.h:26,
from /home/run/tools/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
from /home/run/tools/include/gtk-2.0/gdk/gdk.h:32,
from /home/run/tools/include/gtk-2.0/gtk/gtk.h:32,
from main.c:1:
/home/run/tools/include/gtk-2.0/gtk/gtktypeutils.h:61:24: error: expected ';', ',' or ')' before '.' token
gpointer func_data);
^
/home/run/tools/include/gtk-2.0/gtk/gtkwindow.h:443:36: error: expected ';', ',' or ')' before '.' token
gpointer func_data);
在更多 header 上继续出现相同的错误。似乎 gpointer 对于 GTK headers 是未知的?我什至尝试将 glib include 添加到 gtktypeutils.h 中,将 typedef void* gpointer 定义添加到同一个文件中,或者我将 gpointer 更改为 void*。公交吧returns总是一样的问题。
这是我的 glib 和 gtk 包:
rpm -qa | grep gtk
gtk2-2.24.30-2waixX11
gtk2-devel-2.24.30-2waixX11
rpm -qa | grep glib
glib2-2.56.1-2
glib2-devel-2.56.1-2
你有什么想法吗?谢谢,Jiri。
在 AIX 中,符号 func_data
在 /usr/include/sys/timer.h
中也被定义为 t_union.data
,除非您定义符号 _LINUX_SOURCE_COMPAT
(我不知道 other 此定义可能产生的后果):
gcc -maix64 main.c -D_LINUX_SOURCE_COMPAT `pkg-config --cflags gtk+-2.0`
或者更确切地说,您可以编辑有问题的头文件,如下所示:
perl -pi.bak -e 's/func_data/pfunc_data/g' \
$(grep -l func_data $(find pathto/gtk/ -name '*.h'))
我尝试在我的 IBM AIX7.1 上从 AIX Toolbox 为 Linux 应用程序安装 GTK2。它为我提供了 gtk2-2.24.30-2waixX11,所以我通过 rpm -i 安装了它。
现在我只有简单的空 main.c,它只包含 GTK2。
#include <gtk/gtk.h>
int main (int argc, char *argv[])
{
return 0;
}
当我尝试编译示例时,使用:
gcc -maix64 main.c `pkg-config --cflags gtk+-2.0`
它 returns 我一个错误:
In file included from /usr/include/sys/thread.h:41:0,
from /usr/include/sys/ptrace.h:28,
from /usr/include/sys/proc.h:42,
from /usr/include/sys/pri.h:43,
from /usr/include/sys/sched.h:38,
from /usr/include/sched.h:51,
from /usr/include/pthread.h:63,
from /home/run/tools/include/glib-2.0/glib/deprecated/gthread.h:128,
from /home/run/tools/include/glib-2.0/glib.h:108,
from /home/run/tools/include/glib-2.0/gobject/gbinding.h:28,
from /home/run/tools/include/glib-2.0/glib-object.h:23,
from /home/run/tools/include/glib-2.0/gio/gioenums.h:28,
from /home/run/tools/include/glib-2.0/gio/giotypes.h:28,
from /home/run/tools/include/glib-2.0/gio/gio.h:26,
from /home/run/tools/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
from /home/run/tools/include/gtk-2.0/gdk/gdk.h:32,
from /home/run/tools/include/gtk-2.0/gtk/gtk.h:32,
from main.c:1:
/home/run/tools/include/gtk-2.0/gtk/gtktypeutils.h:61:24: error: expected ';', ',' or ')' before '.' token
gpointer func_data);
^
/home/run/tools/include/gtk-2.0/gtk/gtkwindow.h:443:36: error: expected ';', ',' or ')' before '.' token
gpointer func_data);
在更多 header 上继续出现相同的错误。似乎 gpointer 对于 GTK headers 是未知的?我什至尝试将 glib include 添加到 gtktypeutils.h 中,将 typedef void* gpointer 定义添加到同一个文件中,或者我将 gpointer 更改为 void*。公交吧returns总是一样的问题。
这是我的 glib 和 gtk 包:
rpm -qa | grep gtk
gtk2-2.24.30-2waixX11
gtk2-devel-2.24.30-2waixX11
rpm -qa | grep glib
glib2-2.56.1-2
glib2-devel-2.56.1-2
你有什么想法吗?谢谢,Jiri。
在 AIX 中,符号 func_data
在 /usr/include/sys/timer.h
中也被定义为 t_union.data
,除非您定义符号 _LINUX_SOURCE_COMPAT
(我不知道 other 此定义可能产生的后果):
gcc -maix64 main.c -D_LINUX_SOURCE_COMPAT `pkg-config --cflags gtk+-2.0`
或者更确切地说,您可以编辑有问题的头文件,如下所示:
perl -pi.bak -e 's/func_data/pfunc_data/g' \
$(grep -l func_data $(find pathto/gtk/ -name '*.h'))