Lars,

thanks for your answer. I will try your proposal, we only have static libs which we assemble into an executable. So boost log should be fine here. I also link filesystem etc, but not dl. May be that is the error.


I will try it.

Thanks,
Ovanes


On Wed, Nov 20, 2013 at 3:30 PM, Lars Viklund <zao@acc.umu.se> wrote:
On Wed, Nov 20, 2013 at 03:16:54PM +0100, Ovanes Markarian wrote:
> Hi *,
>
> I am stuck with a problem to link on linux (ubuntu 12.04) with a boost log
> library (clang 3.0 & libstdc++).
>
> No matter what I do it fails. The problem is:
>
> I have a 3rd party library which is delivered as an .so-module and I need
> to link with it. My project is organized so that we develop static
> libraries and link them with test or application runner executables.
>
> I currently build boost as static libraries only, after I link my project
> with log library I get tons of errors like:
>
> /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libpthread.a(nptl-init.o):
> In function `__pthread_initialize_minimal_internal':
> /build/buildd/eglibc-2.15/nptl/nptl-init.c:296: undefined reference to
> `__libc_setup_tls'
> /build/buildd/eglibc-2.15/nptl/nptl-init.c:314: undefined reference to
> `_dl_cpuclock_offset'
> /build/buildd/eglibc-2.15/nptl/nptl-init.c:430: undefined reference to
> `_dl_pagesize'
> /build/buildd/eglibc-2.15/nptl/nptl-init.c:456: undefined reference to
> `_dl_init_static_tls'
> /build/buildd/eglibc-2.15/nptl/nptl-init.c:458: undefined reference to
> `_dl_wait_lookup_done'
> /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libpthread.a(nptl-init.o):
> In function `__pthread_get_minstack':
> /build/buildd/eglibc-2.15/nptl/nptl-init.c:479: undefined reference to
> `_dl_pagesize'
> /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libpthread.a(pthread_create.o):
> In function `allocate_stack':
> /build/buildd/eglibc-2.15/nptl/allocatestack.c:457: undefined reference to
> `_dl_stack_flags'
> /build/buildd/eglibc-2.15/nptl/allocatestack.c:596: undefined reference to
> `_dl_stack_flags'
> /usr/local/lib/libboost_log-mt-s.a(text_file_backend.o): In function
> `boost::log::v2s_mt_posix::sinks::anonymous::file_collector::file_collector(boost::shared_ptr<boost::log::v2s_mt_posix::sinks::anonymous::file_collector_repository>
> const&, boost::filesystem::path const&, unsigned long, unsigned long)':
> libs/log/src/text_file_backend.cpp:(.text+0x60b): undefined reference to
> `boost::filesystem::detail::current_path(boost::system::error_code*)'
> libs/log/src/text_file_backend.cpp:(.text+0x65c): undefined reference to
> `boost::filesystem::absolute(boost::filesystem::path const&,
> boost::filesystem::path const&)'
> libs/log/src/text_file_backend.cpp:(.text+0x6b1): undefined reference to
> `boost::filesystem::detail::create_directories(boost::filesystem::path
> const&, boost::system::error_code*)'
>
> And so on. Do you have any hints or suggestions?

No matter which platform you target, static libraries have the amusing
property that they're pretty much a lump of object files, and as such,
are not linked to any libraries at build time.

Thus, you need to link to any libraries that Boost.Log uses when you
link to a static Boost.Log. Judging by your errors, this would be
-lboost_filesystem, -ldl and possibly building with -pthread, depending
on your toolchain.

Also note that if you use Boost.Log in more than one module (DLL, shared
object), you need to use the shared Boost.Log library as indicated by
the documentation [1].

http://www.boost.org/doc/libs/1_55_0/libs/log/doc/html/log/installation/config.html

--
Lars Viklund | zao@acc.umu.se
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users