Hi Jordi,
Thank you for your answer. Your answer didn't solve the issue, but I
figured out the solution: OTB was compiled with the internal boost library,
which is probably not the same as the version installed on the system. I
compiled OTB with the external version of Boost and the problem disappeared.
Rémy
Le mercredi 1 avril 2015 23:04:27 UTC+2, Jordi Inglada a écrit :
>
> Hi,
>
> It seems that the boost_program_options is not found by your linker. Can
> you try to manually set the lib like this :
>
> TARGET_LINK_LIBRARIES(BaatzSegmentation -lboost_program_options OTBCommon
> OTBIO)
>
> instead of
>
> TARGET_LINK_LIBRARIES(BaatzSegmentation ${Boost_PROGRAM_OPTIONS_LIBRARY}
> OTBCommon OTBIO)
>
> and tell us what you get?
>
> Jordi
>
> Rémy Phelipot <[email protected] <javascript:>> wrote:
> >
> > Hello everyone,
> >
> > I am currently trying to compile a project using OTB 4.4.0 and Boost,
> > and it seems impossible to link the project with OTB and Boost. The
> > error message is:
> > Linking CXX executable bin/BaatzSegmentation
> > CMakeFiles/BaatzSegmentation.dir/apps/BaatzSegmentation.cxx.o:
> > (.rodata._ZTVN5boost15program_options20invalid_option_valueE
> > [_ZTVN5boost15program_options20invalid_option_valueE]+0x20): undefined
> > reference to `boost::program_options::validation_error::what() const'
> > CMakeFiles/BaatzSegmentation.dir/apps/BaatzSegmentation.cxx.o: In
> > function `std::basic_string<char, std::char_traits<char>,
> > std::allocator<char> > const&
> > boost::program_options::validators::get_single_string<char>
> > (std::vector<std::basic_string<char, std::char_traits<char>,
> > std::allocator<char> >, std::allocator<std::basic_string<char,
> > std::char_traits<char>, std::allocator<char> > > > const&, bool)':
> > BaatzSegmentation.cxx:
> >
> (.text._ZN5boost15program_options10validators17get_single_stringIcEERKSbIT_St11char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb[_ZN5boost15program_options10validators17get_single_stringIcEERKSbIT_St11char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb]+0xde):
>
>
> > undefined reference to
> > `boost::program_options::validation_error::validation_error
> > (boost::program_options::validation_error::kind_t, std::string const&,
> > std::string const&)'
> > BaatzSegmentation.cxx:
> >
> (.text._ZN5boost15program_options10validators17get_single_stringIcEERKSbIT_St11char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb[_ZN5boost15program_options10validators17get_single_stringIcEERKSbIT_St11char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb]+0x184):
>
>
> > undefined reference to
> > `boost::program_options::validation_error::validation_error
> > (boost::program_options::validation_error::kind_t, std::string const&,
> > std::string const&)'
> > CMakeFiles/BaatzSegmentation.dir/apps/BaatzSegmentation.cxx.o:
> >
> (.rodata._ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE]+0x20):
>
>
> > undefined reference to `boost::program_options::validation_error::what
> > () const'
> > CMakeFiles/BaatzSegmentation.dir/apps/BaatzSegmentation.cxx.o:
> >
> (.rodata._ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE[_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE]+0x20):
>
>
> > undefined reference to `boost::program_options::validation_error::what
> > () const'
> > CMakeFiles/BaatzSegmentation.dir/apps/BaatzSegmentation.cxx.o:
> >
> (.rodata._ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE]+0x20):
>
>
> > undefined reference to `boost::program_options::validation_error::what
> > () const'
> > CMakeFiles/BaatzSegmentation.dir/apps/BaatzSegmentation.cxx.o:
> >
> (.rodata._ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE[_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE]+0x20):
>
>
> > undefined reference to `boost::program_options::validation_error::what
> > () const'
> > collect2: error: ld returned 1 exit status
> > CMakeFiles/BaatzSegmentation.dir/build.make:224: recipe for target
> > 'bin/BaatzSegmentation' failed
> > make[2]: *** [bin/BaatzSegmentation] Error 1
> > CMakeFiles/Makefile2:60: recipe for target
> > 'CMakeFiles/BaatzSegmentation.dir/all' failed
> > make[1]: *** [CMakeFiles/BaatzSegmentation.dir/all] Error 2
> > Makefile:75: recipe for target 'all' failed
> > make: *** [all] Error 2
> >
> > The content of the CMakeLists.txt file is:
> > PROJECT(LSS)
> > cmake_minimum_required(VERSION 2.8)
> >
> > FIND_PACKAGE(OTB)
> > IF(OTB_FOUND)
> > INCLUDE(${OTB_USE_FILE})
> > ELSE(OTB_FOUND)
> > MESSAGE(FATAL_ERROR
> > "Cannot build OTB project without OTB. Please set OTB_DIR.")
> > ENDIF(OTB_FOUND)
> >
> > set(Boost_USE_STATIC_LIBS OFF)
> > set(Boost_USE_MULTITHREADED ON)
> > set(Boost_USE_STATIC_RUNTIME OFF)
> > set(BOOST_ALL_DYN_LINK ON)
> > find_package(Boost COMPONENTS program_options REQUIRED)
> > if(Boost_PROGRAM_OPTIONS_FOUND)
> > INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
> > LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
> > message(STATUS "program_options not found ${Boost_LIBRARIES}")
> > else()
> > message(FATAL_ERROR "program_options not found")
> > endif()
> >
> > add_executable(main main.cpp)
> > target_link_libraries(main ${Boost_PROGRAM_OPTIONS_LIBRARY})
> >
> > #Check compiler version
> > if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
> > # require at least gcc 4.8
> > if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
> > message(FATAL_ERROR "GCC version must be at least 4.8!")
> > endif()
> > elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
> > # require at least clang 3.2
> > if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.2)
> > message(FATAL_ERROR "Clang version must be at least 3.2!")
> > endif()
> > else()
> > message(WARNING "You are using an unsupported compiler! Compilation
> > has only been tested with Clang and GCC.")
> > endif()
> >
> > include(CheckCXXCompilerFlag)
> > CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
> > if(COMPILER_SUPPORTS_CXX11)
> > set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fpermissive")
> > else()
> > message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11
> > support. Please use a different C++ compiler.")
> > endif()
> >
> > set(EXECUTABLE_OUTPUT_PATH bin)
> >
> > file(
> > GLOB_RECURSE
> > HEADERS
> > "src/*.h"
> > )
> >
> > file(
> > GLOB_RECURSE
> > TEMPLATES
> > "src/*.txx"
> > )
> >
> > file(
> > GLOB_RECURSE
> > SOURCES
> > "src/*.cxx"
> > )
> >
> > set(LSSS_INCLUDE_DIRS "")
> > foreach(_headerFile ${HEADERS})
> > get_filename_component(_dir ${_headerFile} PATH)
> > list(APPEND LSSS_INCLUDE_DIRS ${_dir})
> > endforeach()
> >
> > foreach(_templateFile ${TEMPLATES})
> > get_filename_component(_dir ${_templateFile} PATH)
> > list(APPEND LSSS_INCLUDE_DIRS ${_dir})
> > endforeach()
> >
> > list(REMOVE_DUPLICATES LSSS_INCLUDE_DIRS)
> >
> > include_directories(${LSSS_INCLUDE_DIRS})
> >
> > ADD_EXECUTABLE(
> > TiledBaatzSegmentation
> > apps/TiledBaatzSegmentation.cxx
> > ${SOURCES}
> > )
> >
> > TARGET_LINK_LIBRARIES(TiledBaatzSegmentation $
> > {Boost_PROGRAM_OPTIONS_LIBRARY} OTBCommon OTBIO )
> >
> > ADD_EXECUTABLE(
> > TiledFLSASegmentation
> > apps/TiledFLSASegmentation.cxx
> > ${SOURCES}
> > )
> >
> > TARGET_LINK_LIBRARIES(TiledFLSASegmentation $
> > {Boost_PROGRAM_OPTIONS_LIBRARY} OTBCommon OTBIO)
> >
> > ADD_EXECUTABLE(
> > BaatzSegmentation
> > apps/BaatzSegmentation.cxx
> > ${SOURCES}
> > )
> >
> > TARGET_LINK_LIBRARIES(BaatzSegmentation $
> > {Boost_PROGRAM_OPTIONS_LIBRARY} OTBCommon OTBIO)
> >
> > ADD_EXECUTABLE(
> > FLSASegmentation
> > apps/FLSASegmentation.cxx
> > ${SOURCES}
> > )
> >
> > TARGET_LINK_LIBRARIES(FLSASegmentation $
> > {Boost_PROGRAM_OPTIONS_LIBRARY} OTBCommon OTBIO)
> >
> > I've created a minimal project using only the Boost library and it
> > compiled successfuly, so the problem seems to be related to OTB.
> >
> > Do you have some advices to help me?
> >
> > Rémy
> >
> > --
>
--
--
Check the OTB FAQ at
http://www.orfeo-toolbox.org/FAQ.html
You received this message because you are subscribed to the Google
Groups "otb-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/otb-users?hl=en
---
You received this message because you are subscribed to the Google Groups
"otb-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.