구글 프로토콜 버퍼 사용의 문제점은 두 부분으로 나누었습니다. 하나는 컴파일러 옵션에 관한 것이고 다른 하나는 크로스 컴파일입니다. 빌드 머신은 Power6, 64 비트입니다. 호스트 컴퓨터는 PowerPC450, 32 비트입니다. Gcc 4.1.2. 내가 크로스 컴파일을 필요로하는 파워 시스템에서 구글 프로토콜 버퍼를 설치하기 위해 노력하고있어구글 프로토콜 버퍼 크로스 컴파일
:
첫 번째 문제는 컴파일러 옵션에 관한 것입니다. 빌드 머신은 Power6, 64 비트입니다. 호스트 컴퓨터는 PowerPC450, 32 비트입니다.
./configure --prefix=/home/where_to_install --host=powerpc-bgp-linux
그런 다음 확인 점검을 만들 수 있도록 설치, 모두의 벌금을 : 는 첫째로 내가 사용하는 컴파일러에게 옵션을 직접 빌드 머신에 설치했습니다. 필자는 컴파일 할 필요가있는 충분한 정보를 포함해야하는 호스트 컴퓨터를 지정했다고 생각합니다. 내가
/bgsys/drivers/ppcfloor/gnu-linux/powerpc-bgp-linux/bin/g++ -g -zmuldefs -Xlinker -I/home/somewhere_installed/include $sourceFile -o $fileName -L/home/somewhere_installed/lib -lz -lstdc++ -lrt -lpthread -lm -lc -lprotobuf -lprotoc msg.pb.cc
내가 주어진 오류 내 코드를 컴파일 할 때 :
g++: unrecognized option '-zmuldefs'
In file included from zht_util.h:20,
from hash-phm.cpp:9:
meta.pb.h:9:42: error: google/protobuf/stubs/common.h: No such file or directory
및 common.h에 변수에 대한 오류를 많이
가 발견되지 않았다.컴파일러가 -zmuldefs 옵션을 인식하지 못하기 때문에 존재하는 common.h 파일을 찾을 수 없다는 것을 알고 있습니다. 나는 인터넷 검색을하고 명확한 아이디어를 얻지 못했다. 컴파일러가 옵션을 사용할 수있게하거나 파일을 찾을 수있게하려면 어떻게해야합니까? 아니면 내 컴파일 명령에 어떤 문제가 있습니까?
두 번째 문제는 크로스 컴파일에 관한 것입니다. Google 프로토콜 버퍼의 readme 파일은 정확히 교차 컴파일 방법에 대해 명확하지 않습니다. 그것은 --with-protoc = protoc을 사용하여 configure에 사용할 것을 말해야한다고 말했지만, 그 전에는 호스트 컴퓨터에 대한 복사본을 설치해야합니다. 먼저 명령을 사용하여 호스트 용 사본을 설치합니다.
./configure --prefix=/home/where_to_install/built --host=powerpc-bgp-linux
다음을 make install하십시오.
그런 다음 호스트 컴퓨터 사용과 동일한 컴파일러를 사용하는 아래로 크로스 컴파일 : 다음
./configure --prefix=/home/tonglin/Installed/built_3 CC=/bgsys/drivers/ppcfloor/gnu-linux/bin/powerpc-bgp-linux-gcc CXX=/bgsys/drivers/ppcfloor/gnu-linux/bin/powerpc-bgp-linux-g++ --host=powerpc-bgp-linux --with-protoc=/home/where_already_Installed/built/bin/protoc
하고 오류가있어 :
blabla ... 정보를 컴파일 많은 .....
을collect2: ld returned 1 exit status
make[3]: *** [protoc] Error 1
make[3]: Leaving directory `/gpfs/home/somewere/src/protobuf-2.4.1/src'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/gpfs/home/somewere/src/protobuf-2.4.1/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/gpfs/home/tonglin/Installed/src/protobuf-2.4.1'
make: *** [all] Error 2
어디에서 잘못 했습니까? 나는 또한 첫 번째 설치 (호스트)에 지정된 컴파일러로 시도했지만 두 번째 설치가 위에서 수행 한 것과 동일한 오류가 발생했습니다. 설치가 완료되면 여기에 두 가지 설치가 적용됩니다. 사용해야합니까? 어떤 사람이 나에게 정확하게 Google 프로토콜 버퍼를 컴파일 할 수있는 방법을 보여줄 수 있습니까? 이에 대한 자세한 예제를 찾지 못했습니다. 내가 두 번째 질문에 대답하려고거야
고마워,
토니
비슷한 문제가 있습니다 ... JNI 레이어를 통해 Android Project에서 ProtoBuf lib를 통합하고 있습니다. 튜토리얼 [CPP_ProtoBuf] (https://developers.google.com/protocol-buffers/docs/cpptutorial)을 따르고 있지만 컴파일하는 동안 비슷한 오류가 발생합니다. ** jni /./ mysense/wrapper/addressbook.pb.h : 9 : 42 : 치명적인 오류 : google/protobuf/stubs/common.h : 해당 파일이나 디렉터가 없습니다 **. 여기에 어떤 제안? – CoDe