Solaris 8에서는 protobuf를 만들 수 없습니다.

Solaris 8에서는 protobuf를 만들 수 없습니다.

방금 프로토콜 버퍼(protobuf) 2.5.0을 다운로드했습니다.여기. 그런 다음 Solaris 8(SunOS ms-sparc8 5.8)에 설치해 보았습니다. make를 실행하려고 하면 이 오류가 발생합니다.

In file included from google/protobuf/compiler/command_line_interface.h:41,
             from google/protobuf/compiler/main.cc:33:
google/protobuf/stubs/common.h:48:20: stdint.h: No such file or directory

내 Solaris에는 하나가 없습니다 stdint.h. 그래서 나는 휴대용 제품을 넣어 보았습니다 stdint.h.여기그리고 그것을 넣으십시오 /usr/include/. 를 입력한 후 stdint.hmake를 다시 실행해 보았으나 실패했습니다. 그런 다음 오류를 일으키는 파일(command_line_interface.h 및 main.cc)을 살펴보았습니다. 헤더 파일을 사용하면 command_line_interface.h문제 가 common.h에 의해 발생한다고 가정합니다 . 코드를 살펴보면 다음과 같은 초기화를 발견했습니다.main.cccommon.hcommon.h

#if defined(__osf__)
// Tru64 lacks stdint.h, but has inttypes.h which defines a superset of
// what stdint.h would define.
#include <inttypes.h>
#elif !defined(_MSC_VER)
#include <stdint.h>
#endif

강제로 사용되기를 바라면서 제거 #include <stdint.h>하고 !define(_MSC_VER)교체해 보았습니다 . 그런 다음 다시 실패했습니다. 그래서 내 다음 추측은 정의가 없기 때문입니다. 이것은 무엇을 의미 하는가? make log를 보면 더욱 혼란스럽습니다. make 로그를 확인해야 하는 경우. 나는 붙여 넣었다<inttypes.h>inttypes.h__ost__여기. 이 문제를 어떻게 해결할 수 있나요? protobuf를 설치하면서 같은 문제를 겪은 사람이 있나요?

답변1

다행스럽게도 stdint.h는 매우 복잡한 헤더 파일이 아니므로 간단히 생성할 수 있습니다.

여러 가지 가능성이 있습니다:

  1. <sys/int_types.h>Solaris 8에서는 대신 를 사용할 수 있습니다 <stdint.h>. 소스 코드에서 이 설정을 변경하거나 /usr/include/stdint.h한 줄 내용 " "을 사용하여 #include <sys/int_types.h>고유한 파일을 만들 수 있습니다 .
  2. 다른 시스템에서 가져올 수 있습니다. 예를 들어, stdint.hcygwin64에서는 매우 간단하고 이식 가능해 보입니다.
  3. 또는 실제 beautyfil은 없지만 glibc에서 이를 얻을 수 있습니다(glibc는 모든 것을 필요한 것보다 10배 더 복잡하게 만드는 경향이 있습니다).

당신 대신에 (1)부터 시작했는데 뭔가 잘못되면 새로운 질문을 했어요.

관련 정보