[ITK-users] Linker problems since Ubuntu 16.04 upgrade

Lowekamp, Bradley (NIH/NLM/LHC) [C] blowekamp at mail.nih.gov
Wed Sep 7 12:13:24 EDT 2016


Hello,

You are using the installed Ubuntu version?

Because I see “cxx11” in the string symbol below, I think there may be a miss match between the C++ versions used to compile ITK and what you use here in this example.

I would try to determine which compiler and flags your ubuntu version of ITK was compiled with and try to use the same.

Alternatively, you could just compile ITK from source.

HTH,
Brad




> On Sep 7, 2016, at 12:00 PM, soolijoo <mattghall at gmail.com> wrote:
> 
> Hi,
> 
> I've just upgraded to Ubuntu 16.04 from 14.04 and am having some strange
> linker problems with my code.
> 
> Using the same CMakeLists.txt as previously the compiler is finding the ITK
> headers but the build fails during the linking phase. This is happening even
> for extremely simple, hello world type examples. For example the following
> code:
> 
> #include "itkImage.h"
> #include <iostream>
> 
> int main(int argc, char** argv){
> 
>    typedef itk::Image<unsigned short, 3> ImageType;
> 
>    ImageType::Pointer image = ImageType::New();
> 
>    std::cout << "Hey there, ITK!" << std::endl;
> 
>    return 0;
> 
> }
> 
> 
> with this CMakeLists.txt file:
> 
> cmake_minimum_required(VERSION 2.8)
> 
> project(SimpleMutInfo)
> 
> find_package(ITK REQUIRED)
> include(${ITK_USE_FILE})
> if(ITKVtGlue_LOADED)
>    find_package(VTK REQUIRED)
>    include(${VTK_USE_FILE})
> endif()
> 
> add_executable(SimpleMutInfo simpleMutInfo.cpp)
> 
> MESSAGE(${ITK_LIBRARIES})
> 
> MESSAGE(${CMAKE_INSTALL_PREFIX})
> MESSAGE(${ITK_DIR})
> 
> if( "${ITK_VERSION_MAJOR}" LESS 4 )
>    target_link_libraries(SimpleMutInfo ITKReview ${ITK_LIBRARIES})
> else( "${ITK_VERSION_MAJOR}" LESS 4 )
>    target_link_libraries(SimpleMutInfo ${ITK_LIBRARIES})
> endif( "${ITK_VERSION_MAJOR}" LESS 4 )
> 
> 
> completes the cmake apparently correctly:
> -- The C compiler identification is GNU 5.4.0
> -- The CXX compiler identification is GNU 5.4.0
> -- Check for working C compiler: /usr/bin/cc
> -- Check for working C compiler: /usr/bin/cc -- works
> -- Detecting C compiler ABI info
> -- Detecting C compiler ABI info - done
> -- Detecting C compile features
> -- Detecting C compile features - done
> -- Check for working CXX compiler: /usr/bin/c++
> -- Check for working CXX compiler: /usr/bin/c++ -- works
> -- Detecting CXX compiler ABI info
> -- Detecting CXX compiler ABI info - done
> -- Detecting CXX compile features
> -- Detecting CXX compile features - done
> -- Configuring done
> -- Generating done
> -- Build files have been written to:
> /home/matt/CodingProjects/sandbox/mutInfo/itk/helloItk
> 
> 
> but gives the following compiler error:
> Scanning dependencies of target HelloItk
> [ 50%] Building CXX object CMakeFiles/HelloItk.dir/helloItk.cpp.o
> [100%] Linking CXX executable HelloItk
> CMakeFiles/HelloItk.dir/helloItk.cpp.o: In function
> `itk::MemoryAllocationError::MemoryAllocationError(std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&, unsigned int,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > const&, std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&)':
> helloItk.cpp:(.text._ZN3itk21MemoryAllocationErrorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjS8_S8_[_ZN3itk21MemoryAllocationErrorC5ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjS8_S8_]+0x35):
> undefined reference to
> `itk::ExceptionObject::ExceptionObject(std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&, unsigned int,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > const&, std::__cxx11::basic_string<char,
> std::char_traits<char>, std::allocator<char> > const&)'
> collect2: error: ld returned 1 exit status
> CMakeFiles/HelloItk.dir/build.make:204: recipe for target 'HelloItk' failed
> make[2]: *** [HelloItk] Error 1
> CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/HelloItk.dir/all'
> failed
> make[1]: *** [CMakeFiles/HelloItk.dir/all] Error 2
> Makefile:83: recipe for target 'all' failed
> make: *** [all] Error 2
> 
> 
> I've confirmed that the i've installed all four ubuntu packages mentioned
> here:
> https://blog.kitware.com/itk-packages-in-linux-distributions/
> (including the python bindings)
> 
> The itk libs seem to be in /usr/local/lib but for some reason the linker
> isn't seeing them. 
> 
> Anyone got any ideas?
> 
> 
> 
> 
> 
> 
> 
> 
> --
> View this message in context: http://itk-insight-users.2283740.n2.nabble.com/Linker-problems-since-Ubuntu-16-04-upgrade-tp7589172.html
> Sent from the ITK Insight Users mailing list archive at Nabble.com.
> _____________________________________
> Powered by www.kitware.com
> 
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> 
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.php
> 
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
> 
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/insight-users



More information about the Insight-users mailing list