我有一个需要使用glib和第三方提供的32位库的应用程序。
当我在32位Ubuntu上编译时,应用程序可以成功构建和运行。 然而,当我尝试在64位Ubuntu上进行相同的操作时,由于以下错误导致构建失败:
/usr/include/glib-2.0/glib/gtypes.h: In function ‘_GLIB_CHECKED_ADD_U64’:
/usr/include/glib-2.0/glib/gmacros.h:217:53: error: size of array ‘_GStaticAssertCompileTimeAssertion_0’ is negative
#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
^
/usr/include/glib-2.0/glib/gmacros.h:214:47: note: in definition of macro ‘G_PASTE_ARGS’
#define G_PASTE_ARGS(identifier1,identifier2) identifier1 ## identifier2
^
/usr/include/glib-2.0/glib/gmacros.h:217:44: note: in expansion of macro ‘G_PASTE’
#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
^
/usr/include/glib-2.0/glib/gtypes.h:422:3: note: in expansion of macro ‘G_STATIC_ASSERT’
G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64));
^
注意:我安装了gcc-multilib和g++-multilib。 我还尝试更改
/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h
中的定义,将8改为4,但没有成功。
我还尝试安装libglib2.0-dev:i686
,但是cmake中的pkg config无法找到glib。我还使用了适当的-m32标志用于C、CXX和LD。如有帮助将不胜感激。
unsigned long
,因此我将其更改为unsigned long long
。 - Crunchy234int64_t
而是要复制它。对我来说似乎很愚蠢。 - Peter Cordes