For the first case, the problem is that the build is trying to run protoc as part of the build process, and it's trying to use the cross-compiled protoc. I think you can fix this by editing src/Makefile.am at line 201 to change this: unittest_proto_middleman: protoc$(EXEEXT) $(protoc_inputs) ./$^ -I$(srcdir) --cpp_out=.
to this: unittest_proto_middleman: $(protoc_inputs) protoc $^ -I$(srcdir) --cpp_out=. In other words, this will use the protoc that you have already installed on your system rather than the one you just built. I guess we should figure out how to make this automatic. On Tue, Oct 21, 2008 at 8:42 AM, <[EMAIL PROTECTED]> wrote: > > I'm trying to cross compile for a ppc platform from x86 Linux. > I've used the same procedure as I used to successfully cross > compile other tools (not to say that the procedure is actually right) > but I get some errors. Here's what I tried: > > setenv CC /opt/cross_compiler/ppc/gcc-4.1.0-glibc-2.3.6/powerpc-603- > linux-gnu/bin/powerpc-603-linux-gnu-gcc > setenv CXX /opt/cross_compiler/ppc/gcc-4.1.0-glibc-2.3.6/powerpc-603- > linux-gnu/bin/powerpc-603-linux-gnu-g++ > setenv PATH "$PATH":/opt/cross_compiler/ppc/gcc-4.1.0-glibc-2.3.6/ > powerpc-603-linux-gnu/bin > cd /tmp/pbmpc5200/protobuf-2.0.2rc1/ > ./configure --target=ppc-603-linux-gnu --host=ppc-603-linux-gnu -- > build=i686 > make > > Here are the errors: > make[2]: Entering directory `/tmp/pbmpc5200/protobuf-2.0.2rc1/src' > ./protoc google/protobuf/unittest.proto google/protobuf/ > unittest_import.proto google/protobuf/unittest_mset.proto google/ > protobuf/unittest_optimize_for.proto google/protobuf/ > unittest_embed_optimize_for.proto google/protobuf/ > unittest_custom_options.proto google/protobuf/compiler/cpp/ > cpp_test_bad_identifiers.proto -I. --cpp_out=. > ./protoc: line 105: /tmp/pbmpc5200/protobuf-2.0.2rc1/src/.libs/lt- > protoc: cannot execute binary file > ./protoc: line 105: /tmp/pbmpc5200/protobuf-2.0.2rc1/src/.libs/lt- > protoc: Success > make[2]: *** [unittest_proto_middleman] Error 1 > make[2]: Leaving directory `/tmp/pbmpc5200/protobuf-2.0.2rc1/src' > make[1]: *** [all-recursive] Error 1 > make[1]: Leaving directory `/tmp/pbmpc5200/protobuf-2.0.2rc1' > make: *** [all] Error 2 > > The libprotobuf.so that I wanted actually was actually created and > works, but there were > errors reported. Did I configure incorrectly or are these errors just > expected when cross > compiling? I looks like it might be trying to run a cross compiled > binary? > > Similarly, when cross compiling to win32 using mingw, I get an error: > > make[2]: Entering directory `/tmp/pbmingw/protobuf-2.0.2rc1/src' > /bin/sh ../libtool --tag=CXX --mode=link /opt/cross-tools/bin/i386- > mingw32msvc-g++ -Wall -Wwrite-strings -Woverloaded-virtual -Wno-sign- > compare -g -O2 -o protoc.exe main.o libprotobuf.la libprotoc.la > /opt/cross-tools/bin/i386-mingw32msvc-g++ -Wall -Wwrite-strings - > Woverloaded-virtual -Wno-sign-compare -g -O2 -o protoc.exe > main.o ./.libs/libprotobuf.a -L/tmp/mingwtmp/gcc-i386-mingw32msvc/ > i386-mingw32msvc/libstdc++-v3/src -L/tmp/mingwtmp/gcc-i386-mingw32msvc/ > i386-mingw32msvc/libstdc++-v3/src/.libs -L/tmp/mingwtmp/gcc-i386- > mingw32msvc/gcc -L/opt/cross-tools/i386-mingw32msvc/bin -L/opt/cross- > tools/i386-mingw32msvc/lib -L/opt/cross-tools/lib/../i386-mingw32msvc/ > lib ./.libs/libprotoc.a /tmp/pbmingw/protobuf-2.0.2rc1/src/.libs/ > libprotobuf.a /opt/cross-tools/i386-mingw32msvc/lib/libstdc++.a -lm > ./.libs/libprotobuf.a: could not read symbols: Archive has no index; > run ranlib to add one > collect2: ld returned 1 exit status > make[2]: *** [protoc.exe] Error 1 > make[2]: Leaving directory `/tmp/pbmingw/protobuf-2.0.2rc1/src' > make[1]: *** [all-recursive] Error 1 > make[1]: Leaving directory `/tmp/pbmingw/protobuf-2.0.2rc1' > make: *** [all] Error 2 > > Manually running ranlib on the library seems to work. So in both > cases, > the builds gave errors but I was able to get the libraries I needed. > > > Thanks, > > David > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to protobuf@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/protobuf?hl=en -~----------~----~----~----~------~----~------~--~---