Mis problemas de uso de los búfers de protocolo de Google tienen dos partes, una es sobre las opciones del compilador, otra es la compilación cruzada. La máquina de construcción es una Power6, 64 bits; máquina host es una PowerPC450, 32 bits. Gcc 4.1.2.Buffers de protocolo de Google compilación cruzada
primer problema es acerca de las opciones del compilador:
Estoy tratando de instalar búferes de protocolo de Google en una máquina PowerPC que requiere compilación cruzada. La máquina de construcción es una Power6, 64 bits; máquina host es una PowerPC450, 32 bits. En primer lugar he intentado instalar en la máquina de construcción directamente, con opciones para contar compilador cuál utilizar:
./configure --prefix=/home/where_to_install --host=powerpc-bgp-linux
a continuación, hacer, hacer el cheque, hacer que la instalación, todo está bien. Creo que he especificado el equipo host, que debe incluir suficiente información que compilar debe saber. Cuando intento compilar mi código con el error
/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
me dieron:
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
y una gran cantidad de errores acerca de las variables en COMMON.H no fueron hallados.
Sé que es porque el compilador no reconoce la opción -zmuldefs por lo que no puede encontrar el archivo common.h que sí existe. Busqué en Google y no tuve una idea clara. ¿Cómo puedo hacer que el compilador pueda usar la opción o pueda encontrar el archivo? ¿O hay algún problema en mi comando de compilación?
El segundo problema es acerca de la compilación cruzada. El archivo léame de los búferes de protocolo de Google no es claro acerca de cómo exactamente compilar cruzado. Dijo que debo usar --with-protoc = protoc para decirme qué debo usar, OK, pero antes de eso tengo que instalar una copia para el equipo host. Yo uso el comando primero para instalar una copia para el host
./configure --prefix=/home/where_to_install/built --host=powerpc-bgp-linux
y luego hacer, hacer la instalación.
A continuación, cruzar por debajo de compilar con el cual utiliza mismo compilador como máquina host utiliza:
./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
A continuación, hacer y ha obtenido un error:
una gran cantidad de compilar información ... 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
¿Dónde hice mal? También probé con el compilador especificado en la primera instalación (para el host), obtuvo el mismo error que la segunda instalación anterior. Una vez que tenga éxito para terminar las instalaciones, aquí tendré dos instalaciones, ¿qué debo usar? ¿Hay alguien que pueda darme un ejemplo de cómo puedo cruzar compiladores de protocolos de Google? No encontré ningún ejemplo detallado sobre esto.
Muchas gracias,
-Tony
Tengo un problema similar ... Estoy integrando ProtoBuf lib en Android Project a través de JNI Layer. Estoy siguiendo el tutorial [CPP_ProtoBuf] (https://developers.google.com/protocol-buffers/docs/cpptutorial), pero al compilarlo producen un error similar. ** jni /./ mysense/wrapper/addressbook.pb.h: 9: 42: error fatal: google/protobuf/stubs/common.h: No existe el archivo o el director **. Alguna sugerencia aqui? – CoDe