On Tue, Sep 6, 2016 at 3:24 AM, Pietro <[email protected]> wrote:
> Hi, > > I am working with an embedded device whose build system is Yocto and my > long term goal is to use the gRPC for an small piece of software that > will run on the device. > So, I'll say it again: you probably just want to compile the library statically. That's going to alleviate a lot of headaches on your end. Unless you plan on having a lot of grpc binaries running on your embedded device, a shared library won't give you any advantage. I am new to the gRPC library and I have played with the CPP examples on > my local machine, the second step would be to make the examples running > on the board itself , that done I know I can take it from there and > start to write my own application. > > The gRPC sources compile fine if not cross-compiled and not using the > Yocto build system, but when cross compiled I am stumbling on that > building error. > From what I can see from the building logs the Yocto build seems to > compile many more things than the "native" build, for instance the > borinssl files are NOT compiled when not cross compiling. > > Tools' names such as libtoolize and > configure.ac are printed out in the build log: > > > | libtoolize: copying file `m4/ltsugar.m4' > | > | libtoolize: copying file `m4/ltversion.m4' > | > | libtoolize: copying file `m4/lt~obsolete.m4' > > > | configure.ac:65: installing './ar-lib' > | > | configure.ac:61: installing './compile' > | > | configure.ac:46: installing './config.guess' > | > | configure.ac:46: installing './config.sub' > | > | configure.ac:48: installing './install-sh' > | > | configure.ac:48: installing './missing' > | > | benchmarks/Makefile.am: installing './depcomp' > | > | parallel-tests: installing './test-driver' > > > > .... > > | > | [LD] Linking > | /export/arm/pietro/PD15.1/build/tmp-glibc/work/ > cortexa8t2hf-vfp-neon-phytec-linux-gnueabi/libgrpc/1.0.0- > r0/git/libs/opt/libgpr.so.1.0.0-pre1 > | > | arm-phytec-linux-gnueabi-ld: unrecognized option '-Wl,-O1' > | arm-phytec-linux-gnueabi-ld: use the --help option for usage > | information > > So it looks like the build process is very different in the two cases, > do you have any idea about how I could narrow down the problem or avoid > to compile too many stuff ? I just want to use gRPC C++ and the > libprotobuf is already present in the system. > So, cross compiling anything is always a bit difficult. Even more so in the case of gRPC that is two-faced: there's a native part, which is the protoc plugin, and a cross-compiled part, which is the library itself. Libprotobuf presents the same quality, and some care is required to cross compile libprotobuf successfully. You'll need to compile and install grpc and protobuf once natively on your host machine to get the plugins there, and you'll need to then cross-compile the library portion of libprotobuf first, then the library portion of grpc. The gRPC Makefile will attempt to locate libprotobuf on your system. You can override this check with the following: HAS_SYSTEM_PROTOBUF=true make... You can also simply delete the directory third_party/protobuf, and the Makefile will attempt to fallback on what's on your system. The rest of the dependencies should be easier to cross compile (zlib, ssl, ...) > It might be the compiler used by Yocto isn't right for gRPC : > > Looking at the Makefile I can see load of lines using the > > $(Q) (quiet ?) > $(E) (echo ?) > > Which I have never seen, are they built-in make functions ? > > Is there a way to tell make to show me the full compiler's output ? > This is a typical trick used by various Makefiles around, including the Linux Kernel: ifeq ($(V),1) E = @: Q = else E = @echo Q = @ endif So to display the full command lines, you can do V=1 make... > > > > > > > "'Nicolas Noble' via grpc.io" <[email protected]> writes: > > > No, this is correct for building a shared library under Linux. > > > > Do you really want to build shared libraries? What exactly is the goal > > of your cross compilation? > > > > Most likely, especially if your linker doesn't know about the soname > > option, you only need static libraries, so make static should be > > enough for you. > > > > On Mon, Sep 5, 2016, 06:10 Pietro <[email protected]> wrote: > > > > Hi all, > > > > I want to cross compile the gRPC library for ARM and I am using > > the > > Yocto build system. > > > > The build fails for the following error, which I am suspicious has > > something to do with the compiler being used: > > > > > > [LD] Linking > > /export/arm/xxx/PD15.1/build/tmp-glibc/work/cortexa8t2hf- > vfp-neon-phytec-linux-gnueabi/libgrpc/1.0.0-r0/git/libs/opt/ > libgpr.so.1.0.0-pre1 > > > > > > arm-phytec-linux-gnueabi-ld > > : unrecognized option ' > > -Wl,-soname,libgpr.so.1 > > > > > > arm-phytec-linux-gnueabi-ld > > : use the --help option for usage information > > > > The problem seems to be caused by the following line in the > > makefile:2406 > > > > $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared > > -Wl,-soname,libgpr.so.1 -o > > $(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION).$(SHARED_EXT) > > $(LIBGPR_OBJS) $(LDLIBS) $(ZLIB_MERGE_LIBS) > > Shouldn't that line be -soname=libgrp.so ? > > > > -- > > You received this message because you are subscribed to the Google > > Groups "grpc.io" group. > > To unsubscribe from this group and stop receiving emails from it, > > send an email to [email protected]. > > To post to this group, send email to [email protected]. > > Visit this group at https://groups.google.com/group/grpc-io. > > To view this discussion on the web visit > > https://groups.google.com/d/msgid/grpc-io/87shte8pkv.fsf% > 40posteo.net > > . > > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups " > grpc.io" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/grpc-io. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/grpc-io/87eg4x8gxc.fsf%40posteo.net. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/grpc-io. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/CAEvr0PHpktAHePH4f%2BVCsOk8sYwMEy7hZ-kTFfo7P_Ct%3DpXsQw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
