Compilation error debian 6.1 (boost package problem)
I use gcc 4.4.5 on debian 6.1 and cmake version 2.8.2.
I noticed an compilation error
[ 79%] Building CXX object test/CMakeFiles/test.dir/dbo/Benchmark.o
[ 81%] Building CXX object test/CMakeFiles/test.dir/private/DboImplTest.o
Linking CXX executable test
CMakeFiles/test.dir/private/I18n.o: In function `__static_initialization_and_destruction_0':
/root/work/boost_1_47_0/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'
/root/work/boost_1_47_0/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()'
/root/work/boost_1_47_0/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()'
CMakeFiles/test.dir/private/I18n.o: In function `exists':
/root/work/boost_1_47_0/boost/filesystem/v3/operations.hpp:218: undefined reference to `boost::filesystem3::detail::status(boost::filesystem3::path const&, boost::system::error_code*)'
collect2: ld returned 1 exit status
make: * [test/test] Fehler 1
make: * [test/CMakeFiles/test.dir/all] Fehler 2
make: * [all] Fehler 2
The error shows up, if the packaged version of boost is installed,
but the cmake wt script has been run with:
cmake -DBOOST_ROOT=/root/work/boost_1_47_0 -DCMAKE_INSTALL_PREFIX=/usr ../
remove the debian packaged boost (developer version) with:
aptitude unmarkauto "?name(gccxml)"
RECHECK YOUR APTITUDE OUTPUT TWICE!!! So that you do not delete other dependecies who are neded for compiling wt. They can be ignored for autoremoval with aptitude unmarkauto.
aptitude purge "?name(libboost1.42)"
I think this is a error within the wt cmake script which uses system include paths before custom set paths.
I currently have not much time to investigate this error further, but on the next Weekend I can go on with it.
Updated by Koen Deforche over 10 years ago
- Status changed from New to InProgress
- Assignee set to Koen Deforche
It seems that the include files are correct, but the linked library version could mismatch.
Although, cmake lists dynamic libraries using the explicit path, like "c ... /opt/software/boost1_37/lib/libboost_program_options-gcc42-mt-1_37.so ..."
Could you verify the exact command that goes wrong? Use "VERBOSE=1 make" for this.