Uploaded image for project: 'Mesos'
  1. Mesos
  2. MESOS-1754

Mesos static library has undefined symbols from 3rd party deps

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 0.20.0
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None

      Description

      Looks like the static libmesos library that we build is missing some symbols from 3rd party deps (e.g, GLOG, ZooKeeper). I suspect this has to do with the order of libraries defined on the linker command line.

      zookeeper_init symbol is present in .so but not in .a.
      
      $ nm libmesos.so | grep zookeeper_init
      00000000030519f0 T zookeeper_init
      
      $ nm libmesos.a | grep zookeeper_init
      nm: libleveldb.a: File format not recognized
                       U zookeeper_init
      
      Same with google::InstallFailureSignalHandler.
      
      $ nm libmesos.so | grep InstallFailureSignalHandler
      000000000301901d T _ZN6google27InstallFailureSignalHandlerEv
      
      $ nm libmesos.a | grep InstallFailureSignalHandler
      nm: libleveldb.a: File format not recognized
                       U _ZN6google27InstallFailureSignalHandlerEv
      

        Issue Links

          Activity

          Hide
          jamespeach James Peach added a comment -

          Can libtool be relied upon not to reorder this?

          Show
          jamespeach James Peach added a comment - Can libtool be relied upon not to reorder this?
          Hide
          idownes Ian Downes added a comment -

          Vinod Kone okay to bump this to 0.22.0?

          Show
          idownes Ian Downes added a comment - Vinod Kone okay to bump this to 0.22.0?
          Hide
          tstclair Timothy St. Clair added a comment -

          It looks like the culprit is around the whole-archive link option:

          ------------------------------------------------
          --whole-archive
          For each archive mentioned on the command line after the --whole-archive option, include every object
          file in the archive in the link, rather than searching the archive for the required object files. This
          is normally used to turn an archive file into a shared library, forcing every object to be included in
          the resulting shared library. This option may be used more than once.

          Two notes when using this option from gcc: First, gcc doesn't know about this option, so you have to use
          -Wl,-whole-archive. Second, don't forget to use -Wl,-no-whole-archive after your list of archives,
          because gcc will add its own list of archives to your link and you may not want this flag to affect
          those as well.
          ------------------------------------------------

          more specifically:

          Wl,--no-whole-archive ../3rdparty/libprocess/3rdparty/glog-0.3.3/.libs/libglog.a -L/usr/lib/../lib64 ../3rdparty/leveldb/libleveldb.a ../3rdparty/zookeeper-3.4.5/src/c/.libs/libzookeeper_mt.a

          Show
          tstclair Timothy St. Clair added a comment - It looks like the culprit is around the whole-archive link option: ------------------------------------------------ --whole-archive For each archive mentioned on the command line after the --whole-archive option, include every object file in the archive in the link, rather than searching the archive for the required object files. This is normally used to turn an archive file into a shared library, forcing every object to be included in the resulting shared library. This option may be used more than once. Two notes when using this option from gcc: First, gcc doesn't know about this option, so you have to use -Wl,-whole-archive. Second, don't forget to use -Wl,-no-whole-archive after your list of archives, because gcc will add its own list of archives to your link and you may not want this flag to affect those as well. ------------------------------------------------ more specifically: Wl,--no-whole-archive ../3rdparty/libprocess/3rdparty/glog-0.3.3/.libs/libglog.a -L/usr/lib/../lib64 ../3rdparty/leveldb/libleveldb.a ../3rdparty/zookeeper-3.4.5/src/c/.libs/libzookeeper_mt.a
          Hide
          tstclair Timothy St. Clair added a comment -

          For static libraries 'ar' is called to smush the .o files into a .a. Typically there is no link step / symbol resolution for .a files (only .so and executables) so there is no merging of .a files by default.

          A versioned .so forces linkage, hence it will force symbol resolution.

          Show
          tstclair Timothy St. Clair added a comment - For static libraries 'ar' is called to smush the .o files into a .a. Typically there is no link step / symbol resolution for .a files (only .so and executables) so there is no merging of .a files by default. A versioned .so forces linkage, hence it will force symbol resolution.
          Hide
          vinodkone Vinod Kone added a comment -

          Hi Timothy St. Clair, not sure how versioned .so solves this problem?

          Shouldn't libtool/automake merge the archives correctly when we do *_LIBADD ? It seems to do the right thing for .so but not for .a. IIUC, the linker will/should copy all the required/referenced symbols from the linked archive even if it doesn't pull in all the symbols in the archive? Maybe it has to do with the fact that we have an intermediate non-installable convenience library (libmesos_no_3rdparty) or the fact that we have installable 3rd party libraries (libglog.a etc) ?

          Show
          vinodkone Vinod Kone added a comment - Hi Timothy St. Clair , not sure how versioned .so solves this problem? Shouldn't libtool/automake merge the archives correctly when we do *_LIBADD ? It seems to do the right thing for .so but not for .a. IIUC, the linker will/should copy all the required/referenced symbols from the linked archive even if it doesn't pull in all the symbols in the archive? Maybe it has to do with the fact that we have an intermediate non-installable convenience library (libmesos_no_3rdparty) or the fact that we have installable 3rd party libraries (libglog.a etc) ?
          Hide
          tstclair Timothy St. Clair added a comment -

          So you could do versioned.so file which was the original recommendation (ಠ_ಠ) , or you will have to extract and reassemble : http://stackoverflow.com/questions/3821916/how-to-merge-two-ar-static-libraries-into-one .

          Show
          tstclair Timothy St. Clair added a comment - So you could do versioned.so file which was the original recommendation (ಠ_ಠ) , or you will have to extract and reassemble : http://stackoverflow.com/questions/3821916/how-to-merge-two-ar-static-libraries-into-one .
          Hide
          vinodkone Vinod Kone added a comment - - edited

          Looks like some of the 3rd party deps are not included in the static archive during libtool link step. Not sure if we are missing a flag or something. cc. Timothy St. Clair

          libtool command that gets eventually run

          /bin/sh ../libtool --tag=CC --tag=CXX  --mode=link gcc  -g -Wno-unused-local-typedefs -release 0.21.0  -o libmesos.la -rpath /usr/local/lib    libmesos_no_3rdparty.la ../3rdparty/libprocess/3rdparty/glog-0.3.3/libglog.la  ../3rdparty/leveldb/libleveldb.a  ../3rdparty/zookeeper-3.4.5/src/c/libzookeeper_mt.la  ../3rdparty/libprocess/3rdparty/protobuf-2.5.0/src/libprotobuf.la  ../3rdparty/libprocess/libprocess.la libjava.la -lsasl2 -lcurl -lz  -lrt -lunwind
          libtool: link: warning: `/usr/lib/../lib64/libunwind.la' seems to be moved
          
          *** Warning: Linking the shared library libmesos.la against the
          *** static library ../3rdparty/leveldb/libleveldb.a is not portable!
          libtool: link: warning: `/usr/lib/../lib64/libunwind.la' seems to be moved
          

          shared library includes libglog.a and libzookeeper_mt.a for example.

          libtool: link: g++ -shared -nostdlib /usr/lib/../lib64/crti.o /opt/rh/devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.1/crtbeginS.o  -Wl,--whole-archive ./.libs/libmesos_no_3rdparty.a ../3rdparty/libprocess/.libs/libprocess.a ./.libs/libjava.a -Wl,--no-whole-archive  ../3rdparty/libprocess/3rdparty/glog-0.3.3/.libs/libglog.a -L/usr/lib/../lib64 ../3rdparty/leveldb/libleveldb.a ../3rdparty/zookeeper-3.4.5/src/c/.libs/libzookeeper_mt.a ../3rdparty/libprocess/3rdparty/protobuf-2.5.0/src/.libs/libprotobuf.a /home/vinod/mesos/build/3rdparty/libprocess/3rdparty/glog-0.3.3/.libs/libglog.a -lpthread /home/vinod/mesos/build/3rdparty/libprocess/3rdparty/libev-4.15/.libs/libev.a -lsasl2 -lcurl -lz -lrt /usr/lib64/libunwind.so -lgcc -L/opt/rh/devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.1 -L/opt/rh/devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64 -L/lib/../lib64 -L/opt/rh/devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../.. -lstdc++ -lm -lc -lgcc_s /opt/rh/devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.1/crtendS.o /usr/lib/../lib64/crtn.o    -pthread -Wl,-soname -Wl,libmesos-0.21.0.so -o .libs/libmesos-0.21.0.so
          libtool: link: (cd ".libs" && rm -f "libmesos.so" && ln -s "libmesos-0.21.0.so" "libmesos.so")
          

          static archive doesn't include object files from libglog.a or libzookeeper_mt.a but includes object files from libmesos_no_3rdpart.a, libprocess.a and libjava.a.

          libtool: link: (cd .libs/libmesos.lax/libmesos_no_3rdparty.a && ar x "/home/vinod/mesos/build/src/./.libs/libmesos_no_3rdparty.a")
          libtool: link: (cd .libs/libmesos.lax/libprocess.a && ar x "/home/vinod/mesos/build/src/../3rdparty/libprocess/.libs/libprocess.a")
          libtool: link: (cd .libs/libmesos.lax/libjava.a && ar x "/home/vinod/mesos/build/src/./.libs/libjava.a")
          
          libtool: link: ar cru .libs/libmesos.a ../3rdparty/leveldb/libleveldb.a   .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-state.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-docker.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libstate_la-zookeeper.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-group.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-detector.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-registrar.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-http.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-auxprop.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-gc.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-recover.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-type_utils.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-repairer.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-scheduler.pb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-slave.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt2-libmesos_no_3rdparty_la-constants.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-files.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-usage.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-launch.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-authorizer.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-sched.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-consensus.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libstate_la-log.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-mem.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-coordinator.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt5-libmesos_no_3rdparty_la-containerizer.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-launcher.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-logging.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-initialize.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-isolator.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libstate_la-leveldb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libbuild_la-build.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-values.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-catchup.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-resources.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-read.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-composing.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-log.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-external_containerizer.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-perf.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-attributes.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt1-liblog_la-replica.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-containerizer.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt1-libmesos_no_3rdparty_la-http.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libstate_la-in_memory.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-log.pb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-scheduler.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-benchmark.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-replica.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-authentication.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt4-libmesos_no_3rdparty_la-docker.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-local.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-zookeeper.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-exec.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libstate_la-state.pb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-messages.pb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt6-libmesos_no_3rdparty_la-contender.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-master.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt3-libmesos_no_3rdparty_la-http.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-monitor.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-lock.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-cpushare.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-thread.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-cgroups.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-containerizer.pb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-protobuf_utils.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-drf_sorter.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-linux_launcher.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-constants.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-contender.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt7-libmesos_no_3rdparty_la-detector.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-leveldb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-status_update_manager.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-date_utils.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-mesos.pb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-registry.pb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-perf_event.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-fs.o  .libs/libmesos.lax/libprocess.a/libprocess_la-metrics.o .libs/libmesos.lax/libprocess.a/libprocess_la-timeseries.o .libs/libmesos.lax/libprocess.a/libprocess_la-http.o .libs/libmesos.lax/libprocess.a/libprocess_la-reap.o .libs/libmesos.lax/libprocess.a/libry_http_parser_la-http_parser.o .libs/libmesos.lax/libprocess.a/libprocess_la-subprocess.o .libs/libmesos.lax/libprocess.a/libprocess_la-process.o .libs/libmesos.lax/libprocess.a/libprocess_la-pid.o .libs/libmesos.lax/libprocess.a/libprocess_la-latch.o  .libs/libmesos.lax/libjava.a/libjava_la-org_apache_mesos_MesosSchedulerDriver.o .libs/libmesos.lax/libjava.a/libjava_la-org_apache_mesos_state_LevelDBState.o .libs/libmesos.lax/libjava.a/libjava_la-log4j.o .libs/libmesos.lax/libjava.a/libjava_la-construct.o .libs/libmesos.lax/libjava.a/libjava_la-org_apache_mesos_Log.o .libs/libmesos.lax/libjava.a/libjava_la-convert.o .libs/libmesos.lax/libjava.a/libjava_la-org_apache_mesos_state_ZooKeeperState.o .libs/libmesos.lax/libjava.a/libjava_la-zookeeper.o .libs/libmesos.lax/libjava.a/libjava_la-jvm.o .libs/libmesos.lax/libjava.a/libjava_la-org_apache_mesos_MesosExecutorDriver.o .libs/libmesos.lax/libjava.a/libjava_la-org_apache_mesos_state_Variable.o .libs/libmesos.lax/libjava.a/libjava_la-org_apache_mesos_state_AbstractState.o
          

          Perhaps orthogonal, but I'm not sure why we link non-libtool version of leveldb (.a) instead of the libtool version (.la). There is a comment in the Makefile but I don't understand it. It throws warnings like these. cc Benjamin Hindman

          /bin/sh ../libtool --tag=CC --tag=CXX  --mode=link gcc  -g -Wno-unused-local-typedefs -release 0.21.0  -o libmesos.la -rpath /usr/local/lib    libmesos_no_3rdparty.la ../3rdparty/libprocess/3rdparty/glog-0.3.3/libglog.la  ../3rdparty/leveldb/libleveldb.a  ../3rdparty/zookeeper-3.4.5/src/c/libzookeeper_mt.la  ../3rdparty/libprocess/3rdparty/protobuf-2.5.0/src/libprotobuf.la  ../3rdparty/libprocess/libprocess.la libjava.la -lsasl2 -lcurl -lz  -lrt -lunwind
          libtool: link: warning: `/usr/lib/../lib64/libunwind.la' seems to be moved
          
          *** Warning: Linking the shared library libmesos.la against the
          *** static library ../3rdparty/leveldb/libleveldb.a is not portable!
          libtool: link: warning: `/usr/lib/../lib64/libunwind.la' seems to be moved
          
          Show
          vinodkone Vinod Kone added a comment - - edited Looks like some of the 3rd party deps are not included in the static archive during libtool link step. Not sure if we are missing a flag or something. cc. Timothy St. Clair libtool command that gets eventually run /bin/sh ../libtool --tag=CC --tag=CXX --mode=link gcc -g -Wno-unused-local-typedefs -release 0.21.0 -o libmesos.la -rpath /usr/local/lib libmesos_no_3rdparty.la ../3rdparty/libprocess/3rdparty/glog-0.3.3/libglog.la ../3rdparty/leveldb/libleveldb.a ../3rdparty/zookeeper-3.4.5/src/c/libzookeeper_mt.la ../3rdparty/libprocess/3rdparty/protobuf-2.5.0/src/libprotobuf.la ../3rdparty/libprocess/libprocess.la libjava.la -lsasl2 -lcurl -lz -lrt -lunwind libtool: link: warning: `/usr/lib/../lib64/libunwind.la' seems to be moved *** Warning: Linking the shared library libmesos.la against the *** static library ../3rdparty/leveldb/libleveldb.a is not portable! libtool: link: warning: `/usr/lib/../lib64/libunwind.la' seems to be moved shared library includes libglog.a and libzookeeper_mt.a for example. libtool: link: g++ -shared -nostdlib /usr/lib/../lib64/crti.o /opt/rh/devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.1/crtbeginS.o -Wl,--whole-archive ./.libs/libmesos_no_3rdparty.a ../3rdparty/libprocess/.libs/libprocess.a ./.libs/libjava.a -Wl,--no-whole-archive ../3rdparty/libprocess/3rdparty/glog-0.3.3/.libs/libglog.a -L/usr/lib/../lib64 ../3rdparty/leveldb/libleveldb.a ../3rdparty/zookeeper-3.4.5/src/c/.libs/libzookeeper_mt.a ../3rdparty/libprocess/3rdparty/protobuf-2.5.0/src/.libs/libprotobuf.a /home/vinod/mesos/build/3rdparty/libprocess/3rdparty/glog-0.3.3/.libs/libglog.a -lpthread /home/vinod/mesos/build/3rdparty/libprocess/3rdparty/libev-4.15/.libs/libev.a -lsasl2 -lcurl -lz -lrt /usr/lib64/libunwind.so -lgcc -L/opt/rh/devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.1 -L/opt/rh/devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../../../lib64 -L/lib/../lib64 -L/opt/rh/devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.1/../../.. -lstdc++ -lm -lc -lgcc_s /opt/rh/devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.1/crtendS.o /usr/lib/../lib64/crtn.o -pthread -Wl,-soname -Wl,libmesos-0.21.0.so -o .libs/libmesos-0.21.0.so libtool: link: (cd ".libs" && rm -f "libmesos.so" && ln -s "libmesos-0.21.0.so" "libmesos.so" ) static archive doesn't include object files from libglog.a or libzookeeper_mt.a but includes object files from libmesos_no_3rdpart.a, libprocess.a and libjava.a. libtool: link: (cd .libs/libmesos.lax/libmesos_no_3rdparty.a && ar x "/home/vinod/mesos/build/src/./.libs/libmesos_no_3rdparty.a" ) libtool: link: (cd .libs/libmesos.lax/libprocess.a && ar x "/home/vinod/mesos/build/src/../3rdparty/libprocess/.libs/libprocess.a" ) libtool: link: (cd .libs/libmesos.lax/libjava.a && ar x "/home/vinod/mesos/build/src/./.libs/libjava.a" ) libtool: link: ar cru .libs/libmesos.a ../3rdparty/leveldb/libleveldb.a .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-state.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-docker.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libstate_la-zookeeper.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-group.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-detector.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-registrar.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-http.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-auxprop.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-gc.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-recover.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-type_utils.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-repairer.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-scheduler.pb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-slave.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt2-libmesos_no_3rdparty_la-constants.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-files.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-usage.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-launch.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-authorizer.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-sched.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-consensus.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libstate_la-log.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-mem.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-coordinator.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt5-libmesos_no_3rdparty_la-containerizer.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-launcher.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-logging.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-initialize.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-isolator.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libstate_la-leveldb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libbuild_la-build.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-values.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-catchup.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-resources.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-read.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-composing.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-log.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-external_containerizer.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-perf.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-attributes.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt1-liblog_la-replica.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-containerizer.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt1-libmesos_no_3rdparty_la-http.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libstate_la-in_memory.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-log.pb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-scheduler.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-benchmark.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-replica.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-authentication.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt4-libmesos_no_3rdparty_la-docker.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-local.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-zookeeper.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-exec.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libstate_la-state.pb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-messages.pb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt6-libmesos_no_3rdparty_la-contender.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-master.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt3-libmesos_no_3rdparty_la-http.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-monitor.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-lock.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-cpushare.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-thread.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-cgroups.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-containerizer.pb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-protobuf_utils.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-drf_sorter.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-linux_launcher.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-constants.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-contender.o .libs/libmesos.lax/libmesos_no_3rdparty.a/lt7-libmesos_no_3rdparty_la-detector.o .libs/libmesos.lax/libmesos_no_3rdparty.a/liblog_la-leveldb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-status_update_manager.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-date_utils.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-mesos.pb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-registry.pb.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-perf_event.o .libs/libmesos.lax/libmesos_no_3rdparty.a/libmesos_no_3rdparty_la-fs.o .libs/libmesos.lax/libprocess.a/libprocess_la-metrics.o .libs/libmesos.lax/libprocess.a/libprocess_la-timeseries.o .libs/libmesos.lax/libprocess.a/libprocess_la-http.o .libs/libmesos.lax/libprocess.a/libprocess_la-reap.o .libs/libmesos.lax/libprocess.a/libry_http_parser_la-http_parser.o .libs/libmesos.lax/libprocess.a/libprocess_la-subprocess.o .libs/libmesos.lax/libprocess.a/libprocess_la-process.o .libs/libmesos.lax/libprocess.a/libprocess_la-pid.o .libs/libmesos.lax/libprocess.a/libprocess_la-latch.o .libs/libmesos.lax/libjava.a/libjava_la-org_apache_mesos_MesosSchedulerDriver.o .libs/libmesos.lax/libjava.a/libjava_la-org_apache_mesos_state_LevelDBState.o .libs/libmesos.lax/libjava.a/libjava_la-log4j.o .libs/libmesos.lax/libjava.a/libjava_la-construct.o .libs/libmesos.lax/libjava.a/libjava_la-org_apache_mesos_Log.o .libs/libmesos.lax/libjava.a/libjava_la-convert.o .libs/libmesos.lax/libjava.a/libjava_la-org_apache_mesos_state_ZooKeeperState.o .libs/libmesos.lax/libjava.a/libjava_la-zookeeper.o .libs/libmesos.lax/libjava.a/libjava_la-jvm.o .libs/libmesos.lax/libjava.a/libjava_la-org_apache_mesos_MesosExecutorDriver.o .libs/libmesos.lax/libjava.a/libjava_la-org_apache_mesos_state_Variable.o .libs/libmesos.lax/libjava.a/libjava_la-org_apache_mesos_state_AbstractState.o Perhaps orthogonal, but I'm not sure why we link non-libtool version of leveldb (.a) instead of the libtool version (.la). There is a comment in the Makefile but I don't understand it. It throws warnings like these. cc Benjamin Hindman /bin/sh ../libtool --tag=CC --tag=CXX --mode=link gcc -g -Wno-unused-local-typedefs -release 0.21.0 -o libmesos.la -rpath /usr/local/lib libmesos_no_3rdparty.la ../3rdparty/libprocess/3rdparty/glog-0.3.3/libglog.la ../3rdparty/leveldb/libleveldb.a ../3rdparty/zookeeper-3.4.5/src/c/libzookeeper_mt.la ../3rdparty/libprocess/3rdparty/protobuf-2.5.0/src/libprotobuf.la ../3rdparty/libprocess/libprocess.la libjava.la -lsasl2 -lcurl -lz -lrt -lunwind libtool: link: warning: `/usr/lib/../lib64/libunwind.la' seems to be moved *** Warning: Linking the shared library libmesos.la against the *** static library ../3rdparty/leveldb/libleveldb.a is not portable! libtool: link: warning: `/usr/lib/../lib64/libunwind.la' seems to be moved

            People

            • Assignee:
              Unassigned
              Reporter:
              vinodkone Vinod Kone
            • Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

              • Created:
                Updated:

                Development