방금 프로토콜 버퍼(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.h
make를 다시 실행해 보았으나 실패했습니다. 그런 다음 오류를 일으키는 파일(command_line_interface.h 및 main.cc)을 살펴보았습니다. 헤더 파일을 사용하면 command_line_interface.h
문제 가 common.h에 의해 발생한다고 가정합니다 . 코드를 살펴보면 다음과 같은 초기화를 발견했습니다.main.cc
common.h
common.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는 매우 복잡한 헤더 파일이 아니므로 간단히 생성할 수 있습니다.
여러 가지 가능성이 있습니다:
<sys/int_types.h>
Solaris 8에서는 대신 를 사용할 수 있습니다<stdint.h>
. 소스 코드에서 이 설정을 변경하거나/usr/include/stdint.h
한 줄 내용 " "을 사용하여#include <sys/int_types.h>
고유한 파일을 만들 수 있습니다 .- 다른 시스템에서 가져올 수 있습니다. 예를 들어,
stdint.h
cygwin64에서는 매우 간단하고 이식 가능해 보입니다. - 또는 실제 beautyfil은 없지만 glibc에서 이를 얻을 수 있습니다(glibc는 모든 것을 필요한 것보다 10배 더 복잡하게 만드는 경향이 있습니다).
당신 대신에 (1)부터 시작했는데 뭔가 잘못되면 새로운 질문을 했어요.