Hello Marc,
thank you very much for your answer!
I am not sure to understand how to overcome my problem with these variables.
I can explain my problem further.
I have a toy example of the problem which contains:
- a call to ExternalProject_Add to install boost and yaml-ccp (the latter
depends on the former)
- a main function which loads a file with yaml-cpp (just one line of code)
Everything compiles with GCC 5 and I obtain an executable file (called
gcc_example).
However, when I run this executable file, I get the following error message :
./gcc_example: relocation error: ./gcc_example: symbol
_ZTVNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE, version
GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference
And I can overcome this problem by setting LD_LIBRARY_PATH to the right value:
LD_LIBRARY_PATH=/home/libraries/gcc/5.2.0/lib64/ ./gcc_example
The origin of the problem is that the definition of strings is different since
GCC 5.
Unfortunately, the default behavior is to call the C++ standard library of my
Ubuntu system, and the version of this library is older than the version of GCC
5.
I can check it with 'ldd ./gcc_example':
linux-vdso.so.1 => (0x00007ffd02ef7000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x0000003a71400000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x0000003d03a00000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x0000003a71000000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x0000003d02e00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003d02a00000)
But I don't understand why I have still this problem since I put these lines in
my CMakeLists file (of course the right value of GCC_ROOT is passed to the
cmake command at configuration step):
link_directories(${GCC_ROOT}/lib64)
target_link_libraries(gcc_example ${GCC_ROOT}/lib64/libstdc++.so)
I can provide my simple toy example if it helps to understand.
You just need to compile it with GCC 5 to see the problem (with older versions
of GCC, everything works fine because strings are defined in the "classical"
way).
Best,
Cédric
----- Mail original -----
> De: "Marc CHEVRIER" <[email protected]>
> À: "Cedric Doucet" <[email protected]>, [email protected]
> Envoyé: Vendredi 11 Décembre 2015 08:44:38
> Objet: Re: [CMake] ExternalProject_Add and inheritance
> With CMake, you can control compilation and link flags with the following
> environment variables:
> * CC: specify C compiler
> * CFLAGS: C compiler flags
> * CXX: specify C++ compiler
> * CXXFLAGS: C++ compiler flags
> * LDFLAGS: linker flags
> And to finish you can overload make command for generation using
> CMAKE_COMMAND option of ExternalProject_Add:
> CMAKE_CMMAND “${CMAKE_COMMAND}” -E env CXX=${CMAKE_CXX_COMPILER} LDFLAGS=“…”
> “${CMAKE_COMMAND}”
> From: CMake < [email protected] > on behalf of Cedric Doucet <
> [email protected] >
> Date: Thursday 10 December 2015 at 18:21
> To: " [email protected] " < [email protected] >
> Subject: [CMake] ExternalProject_Add and inheritance
> Hello,
> I use the ExternalProject_Add command to manage third-party libraries.
> In the same time, I need to overcome some compatibility problems between GCC
> 4 and GCC 5 (strings are not defined in the same way in the STL).
> The solution I use is the one given here:
> http://stackoverflow.com/questions/33500337/how-to-handle-dual-abi-in-gcc-5
> It allows me to force to use the libstdc++.so given by the GCC repository
> given to the cmake command.
> The problem is that trick does not work with the ExternalProject_Add command
> because configuration steps of third-party libraries are autonomous.
> Do you know how to solve the problem?
> For example, if I use the ExternalProject_Add command to manage a
> third-library whose configuration also depends on a cmake script, how could
> I tell this script to use the compilers and the libstdc++.so I provided to
> my own cmake script?
> Best,
> Cédric
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake