2016-06-21 3 views
2

제 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 플래그를 사용 중입니다.

이 문제에 대한 도움을 주시면 감사하겠습니다.

+0

이것은 어떤 라이브러리와도 관련이 없습니다. 연결 단계 전에 컴파일이 실패합니다. 당신이 인용 한 마지막 오류 메시지를 보아라. 무엇이 잘못되었는지를 말해 준다. guint64가 어떻게 정의되고 크기가 무엇인지 알아보십시오. –

+0

아, 설치 한 헤더에서 무엇이든 변경했으면 변경 사항을 되돌 리거나 다시 설치하십시오. –

+1

감사 guint64는'''unsigned long''으로 typedefed되었으므로''''unsigned long long''으로 변경했습니다. – Crunchy234

답변

0

왜 glib가 복제하지 않고 int64_t을 사용하려고하지 않는지 알 수 없습니다. 나에게 어리석은 것처럼 보인다. 어쩌면 당신이 의도 한대로 해체 할 기회를 늘리고 64 비트 glib 설치를 사용하여 32 비트 코드를 컴파일하려고 할 때 의도적으로이 작업을 수행 할 수도 있습니다.

32 비트 응용 프로그램을 컴파일하려면 32 비트 라이브러리 개체 파일 (.so)이 필요합니다. -m32에 적절한 유형 정의가있는 glibconfig.h이 제공됩니다.

libglib2.0-dev:i686을 설치하는 것이 올바른 방법이어야합니다. 나는 당신이 궁극적으로 그것을 정리했다고 가정하기 때문에, 당신이 구축하고있는 응용 프로그램은 -I 경로와 -L 라이브러리 경로를 찾습니다.

관련 문제