Google protocol buffers la compilation croisée

Mes problèmes d'utilisation de Google protocol buffers a deux parties, l'une est sur les options du compilateur, un autre est la compilation croisée. La machine de compilation est un Power6, 64 bits; machine hôte est un PowerPC450, 32bit. Gcc 4.1.2.

Premier problème est sur les options du compilateur:

Je suis en train d'installer Google protocol buffers sur une machine PowerPC qui nécessite la compilation croisée. La machine de compilation est un Power6, 64 bits; machine hôte est un PowerPC450, 32bit.
Tout d'abord j'ai essayé de l'installer sur la machine de compilation directement, avec des options de dire compilateur à utiliser:

./configure --prefix=/home/where_to_install --host=powerpc-bgp-linux

Alors faire, faire vérifier, make install, tout va bien. Je pense que j'ai spécifié la machine hôte, qui devrait inclure suffisamment d'informations pour que la compilation besoin de savoir.
Lorsque j'essaie de compiler mon code avec

/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

M'a été donné d'erreur:

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

et beaucoup d'erreur sur les variables en commun.h n'ont pas été trouvés.

Je sais que c'est parce que le compilateur ne reconnait pas l'option -zmuldefs ne peut donc pas trouver le fichier commun.h existe. Je l'ai Googlé et nous n'avons pas une idée claire. Comment puis-je faire le compilateur peut utiliser l'option ou peut trouver le fichier? Ou un problème dans ma compilation de commande?


Le deuxième problème est sur la compilation croisée.
Le fichier lisezmoi de Google protocol buffers n'est pas clair au sujet de exactement comment faire de la compilation croisée. Il a dit que je dois utiliser l'option --with-protoc=protoc dire à configurer pour l'utiliser, OK, mais avant cela, je dois installer une copie de la machine hôte. J'utilise la première commande pour installer une copie de l'hôte

./configure --prefix=/home/where_to_install/built --host=powerpc-bgp-linux

puis make, make install.

Une compilation croisée avec ci-dessous qui utilise le même compilateur que la machine hôte utilise:

./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

Puis faire et a reçu l'erreur:

beaucoup de compiler des infos ...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

Où ai-je fait de mal? J'ai aussi essayé avec le compilateur à la première installation(pour l'hôte), il a en même erreur que deuxième installer fait ci-dessus.
Une fois que j'ai réussi à terminer les installations, ici, je vais avoir deux installations, qui dois-je utiliser? Est-il un peut me donner un exemple de la façon dont exactement que je peux faire de la compilation croisée Google protocol buffers? Je n'ai trouvé aucun exemple détaillé à ce sujet.

Merci beaucoup,

-Tony

Je vais avoir des problème similaire...je suis l'intégration de ProtoBuf lib dans le Projet Android via JNI Couche. Je suis en suivant le tutoriel CPP_ProtoBuf, mais lors de la compilation il produire une erreur semblable. jni/./mysense/emballage/carnet d'adresses.pb.h:9:42: erreur fatale: google/protobuf/talons/commun.h: Aucun fichier ou le directeur. Toute suggestion ici?

OriginalL'auteur Tony | 2011-12-27