A few questions to help me debug/reproduce: - Did you write your own cross compilation toolchains? Or what are you using for that? - Can you provide the bazel command that you run (including a .bazelrc if necessary)? - Is your setup working to cross-compile other targets, specifically :protoc?
On Wednesday, July 20, 2022 at 11:30:26 AM UTC-7 Jasper Swallen wrote: > > The errors begin with: > > 1658341606.638177021: src/main/tools/linux-sandbox-pid1.cc:481: child > started with PID 2 > bazel-out/host/bin/external/com_github_protocolbuffers_protobuf/_objs/protoc/main.o: > > In function `google::protobuf::compiler::ProtobufMain(int, char**)': > main.cc:(.text+0x24): undefined reference to > `std::allocator<char>::allocator()' > main.cc:(.text+0x38): undefined reference to > `std::__cxx11::basic_string<char, std::char_traits<char>, > std::allocator<char> >::basic_string(char const*, std::allocator<char> > const&)' > main.cc:(.text+0x4c): undefined reference to > `std::__cxx11::basic_string<char, std::char_traits<char>, > std::allocator<char> >::~basic_string()' > main.cc:(.text+0x54): undefined reference to > `std::allocator<char>::~allocator()' > main.cc:(.text+0x64): undefined reference to > `std::allocator<char>::allocator()' > > I've tried setting --proto_toolchain_for_cc=//toolchains:cross, but it > seems to make no difference - it doesn't even seem to try to rebuild the > library when I change the proto_toolchain_for_cc variable, and using > invalid values "works" fine. > On Tuesday, July 19, 2022 at 3:28:41 PM UTC-7 Jasper Swallen wrote: > >> I have cross compilation set up in my bazel project to allow building >> with multiple separate toolchains (currently x86-64 and cross compilation >> for aarch64). As I understand it, protobuf officially supports aarch64. >> However, compilation of @com_google_protobuf//:protobuf_python fails >> when my cross-compiled toolchain is selected. Is there a proper way to >> handle this? I would like to build either the correct protoc for this cross >> compilation, or if that's not possible, disable the toolchain for just this >> target (so that the protoc for this platform can be used). >> >> I currently select the toolchain with something like this in my .bazelrc: >> build:cross --crosstool_top=//toolchains:cross >> build:cross --cpu=arm >> build:cross --force_pic=true >> >> The errors I get come from the linker thinking that all the symbols are >> undefined (even std library symbols). >> > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/protobuf/a5044ba9-8831-4a64-94ab-31c05180bc9en%40googlegroups.com.
