|
Boost Users : |
Subject: Re: [Boost-users] Boost Filesystem fails with FreeBSD 10, clang, and boost
From: Lars Viklund (zao_at_[hidden])
Date: 2014-06-20 03:50:58
On Thu, Jun 19, 2014 at 05:55:10PM -0700, Ricky Huang wrote:
> Hello all,
>
> I am currently migrating to a FreeBSD 10 system which comes default with clang language. I was able to compile Boost just fine. But when I include filesysstem.hpp to it, I get the following error message:
>
> > Linking CXX executable boost_clang_test
> > /usr/bin/ld: : invalid DSO for symbol `_ZN5boost6system15system_categoryEv' definition
> > /usr/local/lib/libboost_system.so.1.55.0: could not read symbols: Bad value
> > CC: error: linker command failed with exit code 1 (use -v to see invocation)
> > *** Error code 1
> >
> > Stop.
Did you install Boost from ports or did you build it yourself?
Note that Boost.System is a dependency of Boost.Filesystem, so you
probably need to mention it in the COMPONENTS list, as AFIAK FindBoost
doesn't grok library dependencies.
Your error is due to not explicitly linking Boost.System, causing the
linker to do some best-effort finding of the symbols based on what
boost_filesystem pulls in, but not quite succeeding.
I reproduced your problem on my 10.0 machine and resolved it by adding
'system' to the list of the components.
> I am using cmake as my build system, could it be possible that I need to adjust my cmake variables? I am not sure if I've came to correct forum or should this be on FreeBSD, clang, CMake forum(s)? Please let me know if I am at the wrong placeâ¦
>
>
> The minimum amount of code to induce the problem are the following 2 files:
>
> CMakeLists.txt:
>
> cmake_minimum_required(VERSION 2.8)
>
> # Find and include Boost libraries
> find_package(Boost 1.55 COMPONENTS filesystem REQUIRED)
> include_directories(${Boost_INCLUDE_DIR})
> set(LIBS ${LIBS} ${Boost_LIBRARIES})
>
> set(BOOST_CLANG_TEST_SOURCES ${SOURCES} main.cpp)
>
> add_executable(boost_clang_test ${BOOST_CLANG_TEST_SOURCES})
> target_link_libraries(boost_clang_test ${LIBS})
>
>
> main.cpp:
>
> #include <stdio.h>
> #include <iostream>
> #include <sstream>
> #include <string>
> #include <boost/filesystem.hpp>
>
> using namespace std;
> using namespace boost::filesystem;
>
> const char *progname;
>
> int main(int argc, char **argv){
> return 0;
> }
>
>
> Thanks in advance.
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Lars Viklund | zao_at_[hidden]
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net