IBM AIX 7.1 не удалось скомпилировать с помощью gtk2-2.24.30-2 - PullRequest
0 голосов
/ 14 ноября 2018

Я попытался установить GTK2 на свой IBM AIX7.1 из AIX Toolbox для приложений Linux.Он предлагает мне 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`

Это возвращает мне ошибку:

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);

Это продолжается с той же ошибкой в ​​большем количестве заголовка.Кажется, что gpointer неизвестен для заголовков GTK?Я даже пытался добавить glib include в gtktypeutils.h, определение typedef void * gpointer в тот же файл или я установил gpointer в void *.Bus возвращает всегда одну и ту же проблему.

Вот мои пакеты 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

У вас есть идея?Спасибо, Иржи.

1 Ответ

0 голосов
/ 14 ноября 2018

В AIX символ func_data также определяется в /usr/include/sys/timer.h как t_union.data, если только вы не определите символ _LINUX_SOURCE_COMPAT (я не могу сказать, какие другие последствия могут иметь это определение):

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'))
...