제 3자가 제공 한 glib 및 32 비트 라이브러리를 사용해야하는 응용 프로그램이 있습니다.64 비트 우분투에서 32 비트 컴파일에 실패했습니다. 16.04
32 비트 우분투에서 컴파일하면 응용 프로그램이 성공적으로 빌드되어 실행됩니다. 내가 64 비트 우분투 같은 때 그러나 그것은 다음 오류 때문에 구축 실패
/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를 찾을 수 없습니다. 또한 C, CXX 및 LD에 대해 적절한 -m32 플래그를 사용 중입니다.
이 문제에 대한 도움을 주시면 감사하겠습니다.
이것은 어떤 라이브러리와도 관련이 없습니다. 연결 단계 전에 컴파일이 실패합니다. 당신이 인용 한 마지막 오류 메시지를 보아라. 무엇이 잘못되었는지를 말해 준다. guint64가 어떻게 정의되고 크기가 무엇인지 알아보십시오. –
아, 설치 한 헤더에서 무엇이든 변경했으면 변경 사항을 되돌 리거나 다시 설치하십시오. –
감사 guint64는'''unsigned long''으로 typedefed되었으므로''''unsigned long long''으로 변경했습니다. – Crunchy234