gnuradio / gr-tutorial

A tutorial OOT module for GNU Radio

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

log4cpp linking errors in macOS

giladbeeri opened this issue · comments

macOS 10.12.1 and GR 3.7.10.1, I got linking errors for log4cpp when running "make" (trying to install the module as instructed in tutorial 4).

Solution: Run "CC=clang CXX=clang cmake .." instead of "cmake ..".

I wanted to put that as a comment in the tutorial itself but can't post comments there, so this issue is a solution rather than a problem.

Error output:

build $ make
[  4%] Linking CXX shared library libgnuradio-tutorial.dylib
Undefined symbols for architecture x86_64:
  "log4cpp::CategoryStream::~CategoryStream()", referenced from:
      gr::tutorial::my_qpsk_demod_cb_impl::my_qpsk_demod_cb_impl(bool) in my_qpsk_demod_cb_impl.cc.o
      gr::tutorial::my_qpsk_demod_cb_impl::my_qpsk_demod_cb_impl(bool) in my_qpsk_demod_cb_impl.cc.o
  "log4cpp::CategoryStream::operator<<(log4cpp::CategoryStream& (*)(log4cpp::CategoryStream&))", referenced from:
      gr::tutorial::my_qpsk_demod_cb_impl::my_qpsk_demod_cb_impl(bool) in my_qpsk_demod_cb_impl.cc.o
      gr::tutorial::my_qpsk_demod_cb_impl::my_qpsk_demod_cb_impl(bool) in my_qpsk_demod_cb_impl.cc.o
  "log4cpp::CategoryStream::operator<<(char const*)", referenced from:
      gr::tutorial::my_qpsk_demod_cb_impl::my_qpsk_demod_cb_impl(bool) in my_qpsk_demod_cb_impl.cc.o
      gr::tutorial::my_qpsk_demod_cb_impl::my_qpsk_demod_cb_impl(bool) in my_qpsk_demod_cb_impl.cc.o
  "log4cpp::eol(log4cpp::CategoryStream&)", referenced from:
      gr::tutorial::my_qpsk_demod_cb_impl::my_qpsk_demod_cb_impl(bool) in my_qpsk_demod_cb_impl.cc.o
      gr::tutorial::my_qpsk_demod_cb_impl::my_qpsk_demod_cb_impl(bool) in my_qpsk_demod_cb_impl.cc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/libgnuradio-tutorial.dylib] Error 1
make[1]: *** [lib/CMakeFiles/gnuradio-tutorial.dir/all] Error 2
make: *** [all] Error 2

Hi I ran as you said but I still get the similar error as below:

  ...

"___dynamic_cast", referenced from:
gr::tutorial::my_qpsk_demod_cb::make(bool) in my_qpsk_demod_cb_impl.cc.o
gr::tutorial::my_qpsk_demod_tags_cb::make(bool) in my_qpsk_demod_tags_cb_impl.cc.o
"___gxx_personality_v0", referenced from:
gr::tutorial::my_qpsk_demod_cb::make(bool) in my_qpsk_demod_cb_impl.cc.o
gr::tutorial::my_qpsk_demod_cb_impl::my_qpsk_demod_cb_impl(bool) in my_qpsk_demod_cb_impl.cc.o
gr::tutorial::my_qpsk_demod_cb_impl::my_qpsk_demod_cb_impl(bool) in my_qpsk_demod_cb_impl.cc.o
gr::tutorial::my_qpsk_demod_cb_impl::~my_qpsk_demod_cb_impl() in my_qpsk_demod_cb_impl.cc.o
virtual thunk to gr::tutorial::my_qpsk_demod_cb_impl::~my_qpsk_demod_cb_impl() in my_qpsk_demod_cb_impl.cc.o
gr::tutorial::my_qpsk_demod_cb::~my_qpsk_demod_cb() in my_qpsk_demod_cb_impl.cc.o
virtual thunk to gr::tutorial::my_qpsk_demod_cb::~my_qpsk_demod_cb() in my_qpsk_demod_cb_impl.cc.o
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/libgnuradio-tutorial.dylib] Error 1
make[1]: *** [lib/CMakeFiles/gnuradio-tutorial.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 60%] Built target tutorial_swig_swig_2d0df
make: *** [all] Error 2

Is there any solution? I use MacOS 10.12.2 and Gnuradio 3.7.10.1
Many thanks!

On OS X 10.11.6 with GNU Radio Companion 3.7.10.1 compiled from MacPorts.

Can confirm, I am seeing similar errors and the CC/CXX trick did not work for me:

[  4%] Linking CXX shared library libgnuradio-tutorial.dylib
Undefined symbols for architecture x86_64:
  "log4cpp::CategoryStream::~CategoryStream()", referenced from:
      gr::tutorial::my_qpsk_demod_cb_impl::my_qpsk_demod_cb_impl(bool) in my_qpsk_demod_cb_impl.cc.o
      gr::tutorial::my_qpsk_demod_cb_impl::my_qpsk_demod_cb_impl(bool) in my_qpsk_demod_cb_impl.cc.o
      gr::tutorial::my_qpsk_demod_tags_cb_impl::my_qpsk_demod_tags_cb_impl(bool) in my_qpsk_demod_tags_cb_impl.cc.o
      gr::tutorial::my_qpsk_demod_tags_cb_impl::my_qpsk_demod_tags_cb_impl(bool) in my_qpsk_demod_tags_cb_impl.cc.o
  "log4cpp::CategoryStream::operator<<(log4cpp::CategoryStream& (*)(log4cpp::CategoryStream&))", referenced from:
      gr::tutorial::my_qpsk_demod_cb_impl::my_qpsk_demod_cb_impl(bool) in my_qpsk_demod_cb_impl.cc.o
      gr::tutorial::my_qpsk_demod_cb_impl::my_qpsk_demod_cb_impl(bool) in my_qpsk_demod_cb_impl.cc.o
      gr::tutorial::my_qpsk_demod_tags_cb_impl::my_qpsk_demod_tags_cb_impl(bool) in my_qpsk_demod_tags_cb_impl.cc.o
      gr::tutorial::my_qpsk_demod_tags_cb_impl::my_qpsk_demod_tags_cb_impl(bool) in my_qpsk_demod_tags_cb_impl.cc.o

<.....>
commented

I still get the same error:
v3.7-MacPorts-devel-git-3a2c67c6(20170413)

Was anyone able to solve this issue?

I am getting the same error

:info:build Undefined symbols for architecture x86_64:
:info:build "log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()", referenced from:
:info:build __GLOBAL__sub_I_fcdproplus_impl.cc in fcdproplus_impl.cc.o
:info:build "log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()", referenced from:
:info:build __GLOBAL__sub_I_fcdproplus_impl.cc in fcdproplus_impl.cc.o
:info:build ld: symbol(s) not found for architecture x86_64
:info:build clang: error: linker command failed with exit code 1 (use -v to see invocation)
:info:build make[2]: *** [lib/libgnuradio-fcdproplus.3.7.2.dylib] Error 1

Checkout this PR, does patching it in, resolve the issue? - 48adbb3

commented

That resolves the issue. Thanks!
I have created a sample GNURadio block with a commit which show to fix this issue:
vamsi765/gr-testinggnuradio@c204fc7