Build succeeds but can not run on Mac


ROOT Version: 6.14.2
Platform: Mac 10.13.6
Compiler: clang-902.0.39.2


Building a minimal ROOT is successful, but running (from Python) fails win the TClingCallFunction wrapper generation, like so:

IncrementalExecutor::executeFunction: symbol '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EOS5_' unresolved while linking symbol '__cf_1'!
You are probably missing the definition of std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&)
Maybe you need to load the corresponding shared library?

This is just an example: there are many such similar cases.

Checking /usr/lib/stdc++.dylib, I find that the symbol in there starts with 2, not 1, underscores. Note that not all symbols fail: only those that are not already used by linked in libraries (such as libCore, libRIO, etc.).

Build arguments are:

cmake ../root -Dcxx14=ON -Dminimal=ON -Dasimage=OFF -Droot7=OFF -Dhttp=OFF -Dbuiltin_freetype=OFF -Dbuiltin_pcre=ON -Dbuiltin_zlibg=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=...

and EXTRA_CLING_ARGS is ‘-O2 -mavx’.

Note that the downloaded binary from root.cern.ch works just fine. which is why I put it down to a configuration problem. If I use the libCling.so from that distribution, all is fine, however. (This makes sense, as the IncrementalExecutor is from Cling and obtains the mangler from LLVM’s codegen.)

I tried with and withoud -Dlibcxx=ON, wiped all other llvm’s and clangs (other than the system one), etc. nothing makes a difference.

Any ideas?

Or, is e.g. the build log from the binary distribution available? That way, I can compare the sub-configure of LLVM and look for differences.

Hum, it’s not the other libCling that makes a difference, but what it pulled in: the other allDict.cxx.pch. Replacing the minimal one with the downloaded prebuilt one does the trick.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.