Google protocol buffers cross-Compilierung

Meine Probleme mit Google protocol buffers hat zwei Teile, eines ist über compiler-Optionen, eine andere ist die cross-Compilierung. Die Baumaschine ist ein Power6, 64bit; host-Maschine ist ein PowerPC450, 32bit. Gcc-4.1.2.

Erste problem wird über compiler-Optionen:

Bin ich versucht zu installieren, Google protocol buffers auf einem PowerPC-Rechner erfordert die cross-Compilierung. Die Baumaschine ist ein Power6, 64bit; host-Maschine ist ein PowerPC450, 32bit.
Erstens habe ich versucht zu installieren auf der build-Maschine direkt, mit dem Optionen sagen compiler zu verwenden:

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

Dann make, make check make install, alles ist in Ordnung. Ich denke, dass ich angegeben habe-host-Rechner, das sollte genug Informationen, kompilieren Sie brauchen, um wissen.
Wenn ich versuche zu kompilieren meines Codes mit

/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

Bekam ich die Fehlermeldung:

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

und eine Menge Fehler über Variablen im Allgemeinen.h nicht gefunden wurden.

Ich weiß, es ist, weil der compiler nicht erkennt, die option -zmuldefs so nicht finden können, die Datei common.h existiert. Ich Gegoogelt es und bekam keine klare Vorstellung. Wie kann ich von der complier die option oder die Datei finden kann? Oder ist irgendein problem in meinem kompilieren Befehl?


Das zweite problem ist über die cross-Compilierung.
Die readme-Datei von Google protocol buffers ist nicht klar, wie genau die cross-kompilieren. Sie sagte, ich muss mit --with-protoc=protoc zu sagen, zu konfigurieren, welche zu verwenden, OK, aber bevor ich installieren Sie eine Kopie für host-Maschine. Ich benutze den Befehl zuerst installieren Sie eine Kopie für host

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

dann make, make install.

Dann cross-kompilieren mit unter die gleichen compiler verwendet als host-Maschine verwendet:

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

Dann machen und bekam die Fehlermeldung:

viel kompilieren info ...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

Wo habe ich falsch gemacht? Ich habe auch versucht mit der angegebenen compiler in der ersten Installation(für host), er bekam die gleichen Fehler, als zweites installiert haben.
Nachdem ich erfolgreich zu beenden, Installationen, hier habe ich zwei installiert, welches sollte ich nutzen? Gibt es jemand kann mir ein Beispiel nennen, wie genau kann ich einen cross-compile-Google protocol buffers? Ich fand keine detaillierte Beispiel über diese.

Vielen Dank,

-Tony

Ich habe ähnliches Problem...ich bin die Integration von ProtoBuf lib im Android-Projekt über JNI Layer. Ich bin folgendem tutorial CPP_ProtoBuf, aber beim kompilieren produzieren ähnliche Fehler. jni/./mysense/wrapper/addressbook.pb.h:9:42: schwerwiegender Fehler: google/protobuf/stubs/common.h: No such file or director. Jeder Vorschlag hier?

InformationsquelleAutor Tony | 2011-12-27

Schreibe einen Kommentar