Cody Maloney created MESOS-2486:
-----------------------------------

             Summary: With unbundled dependencies Mesos doesn't build with 
-Wl,--no-copy-dt-needed-entries
                 Key: MESOS-2486
                 URL: https://issues.apache.org/jira/browse/MESOS-2486
             Project: Mesos
          Issue Type: Bug
          Components: build
    Affects Versions: 0.22.0
         Environment: Ubuntu 14.10
            Reporter: Cody Maloney
            Assignee: Cody Maloney
            Priority: Blocker


To build a module, glog, protobuf, and boost need to be unbundled so they can 
be used by both the module as well as Mesos.

In a bundled build, we build the libraries into libmesos.la / libmesos.so, so 
every program picks them up.

In unbundled dependencies are used, we link against all of the dynamic 
libraries / .so files manually. We link libmesos.so against them, then link all 
the other programs against libmesos.so to get the dependencies.

This relies on the DT_NEEDED flag "copying" the .so's dependencies into the 
executable. [Ubuntu and 
Debian|https://wiki.ubuntu.com/ToolChain/CompilerFlags#A-Wl.2C--no-copy-dt-needed-entries]
 forcibly add the flag `-Wl,--no-copy-dt-needed-entries` to the linker to 
disable this.

This breaks the build with unbundled dependencies on those platforms. Some 
sample error messages:
{code}
/usr/bin/ld: log/mesos_log-main.o: undefined reference to symbol 
'_ZN6google4base21CheckOpMessageBuilder7ForVar2Ev'
/usr/bin/ld: local/mesos_local-main.o: undefined reference to symbol 
'_ZN6google4base21CheckOpMessageBuilder7ForVar2Ev'
cli/mesos-mesos.o: In function `os::getenv(std::string const&, bool) [clone 
.part.30]':
mesos.cpp:(.text.unlikely+0x2b): undefined reference to 
`google::LogMessageFatal::LogMessageFatal(char const*, int)'
mesos.cpp:(.text.unlikely+0x33): undefined reference to 
`google::LogMessage::stream()'
mesos.cpp:(.text.unlikely+0x66): undefined reference to 
`google::LogMessageFatal::~LogMessageFatal()'
collect2: error: ld returned 1 exit status

{code}



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

Reply via email to