[ 
https://issues.apache.org/jira/browse/MESOS-1754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14118952#comment-14118952
 ] 

Vinod Kone edited comment on MESOS-1754 at 9/3/14 8:49 PM:
-----------------------------------------------------------

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. 
[~tstclair]

libtool command that gets eventually run
{code}
/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
{code}

shared library includes libglog.a and libzookeeper_mt.a for example.
{code}
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")
{code} 

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.

{code}
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
{code}

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 [~benjaminhindman]
{code}
/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
{code}



was (Author: vinodkone):
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. 
[~tstclair]

shared library includes glog and zookeeper for example.
{code}
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")
{code} 

static archive doesn't include glog or zookeeper for example.
{code}
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
{code}

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 [~benjaminhindman]
{code}
/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
{code}


> Mesos static library has undefined symbols from 3rd party deps
> --------------------------------------------------------------
>
>                 Key: MESOS-1754
>                 URL: https://issues.apache.org/jira/browse/MESOS-1754
>             Project: Mesos
>          Issue Type: Bug
>    Affects Versions: 0.20.0
>            Reporter: Vinod Kone
>            Assignee: Vinod Kone
>
> 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.
> {code}
> 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
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to