Mblock linking error

I just checked out the trunk rev 4659, did a bootstrap, configure, it
fails
on the make.
I am running ubuntu edgy. Is this an issue with the new
linking/integrating
mblock?

-Josh

/bin/bash …/…/…/libtool --tag=CXX --mode=link g++ -g -O2 -Wall
-Woverloaded-virtual -pthread -o test_mblock test_mblock.o
libmblock-qa.la libmblock.la
g++ -g -O2 -Wall -Woverloaded-virtual -pthread -o .libs/test_mblock
test_mblock.o ./.libs/libmblock-qa.so ./.libs/libmblock.so -Wl,–rpath
-Wl,/usr/local/lib
./.libs/libmblock-qa.so: undefined reference to
pmt_list3(boost::shared_ptr<pmt_base>, boost::shared_ptr<pmt_base>, boost::shared_ptr<pmt_base>)' ./.libs/libmblock-qa.so: undefined reference topmt_list1(boost::shared_ptr<pmt_base>)’
./.libs/libmblock-qa.so: undefined reference to
pmt_list2(boost::shared_ptr<pmt_base>, boost::shared_ptr<pmt_base>)' collect2: ld returned 1 exit status make[4]: *** [test_mblock] Error 1 make[4]: Leaving directory/usr/src/gnuradio_trunk/mblock/src/lib’
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory /usr/src/gnuradio_trunk/mblock/src' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory/usr/src/gnuradio_trunk/mblock’
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/src/gnuradio_trunk’
make: *** [all] Error 2

I’ve run into the same problem on Ubuntu 6.06 (Dapper Drake) at trunk
rev 4662 (current). The trunk tree built fine for me on the same box a
month ago. (I already tried make distclean and bootstrap.)

-Roshan

The same problem occurs on cygwin. I know cygwin is a lower priority,
but the issue may not be ubuntu specific. -josh

Josh B. wrote:

The same problem occurs on cygwin. I know cygwin is a lower priority,
but the issue may not be ubuntu specific. -josh

Roshan B. wrote:

I’ve run into the same problem on Ubuntu 6.06 (Dapper Drake) at trunk
rev 4662 (current). The trunk tree built fine for me on the same box a
month ago. (I already tried make distclean and bootstrap.)

Could you gentlemen please update and retry?


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com

So I manually installed pmt. The make stops a new error with omnithread.
Going into the omnithread directory and make install doesnt fix this
one. So is ubuntu just megaborked for gnuradio? I should seek a new OS
(like fedora?) -Josh

creating libmblock-qa.la
(cd .libs && rm -f libmblock-qa.la && ln -s …/libmblock-qa.la
libmblock-qa.la)
if g++ -DHAVE_CONFIG_H -I. -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -g -O2 -Wall
-Woverloaded-virtual -pthread -MT test_mblock.o -MD -MP -MF
“.deps/test_mblock.Tpo” -c -o test_mblock.o test_mblock.cc;
then mv -f “.deps/test_mblock.Tpo” “.deps/test_mblock.Po”; else
rm -f “.deps/test_mblock.Tpo”; exit 1; fi
/bin/bash …/…/…/libtool --tag=CXX --mode=link g++ -g -O2 -Wall
-Woverloaded-virtual -pthread -o test_mblock test_mblock.o
libmblock-qa.la
g++ -g -O2 -Wall -Woverloaded-virtual -pthread -o .libs/test_mblock
test_mblock.o ./.libs/libmblock-qa.so -Wl,–rpath -Wl,/usr/local/lib
./.libs/libmblock-qa.so: undefined reference to
omni_thread::init_t::init_t()' ./.libs/libmblock-qa.so: undefined reference toomni_thread::init_t::~init_t()’
./.libs/libmblock-qa.so: undefined reference to
mb_mblock_impl::component(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ./.libs/libmblock-qa.so: undefined reference tomb_mblock::fullname()
const’
collect2: ld returned 1 exit status
make[4]: *** [test_mblock] Error 1
make[4]: Leaving directory /usr/src/gnuradio_trunk/mblock/src/lib' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory/usr/src/gnuradio_trunk/mblock/src’
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory /usr/src/gnuradio_trunk/mblock' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory/usr/src/gnuradio_trunk’
make: *** [all] Error 2

This problem is understood. There is a change in libtool in the
Debian/Ubuntu community. I believed this was fixed here by finding out
some shell changes but it is not.

If you cannot build mblock, you need to install pmt, which alway
builds first. Go into the pmt directory and make install or sudo make
install depending on your situation.

Then when you go back to the base directory and do make, the mblock
(and the rest of the) make will complete quickly.

There are a couple of really aggravating things in Ubuntu 6.1 (maybe
earlier) and libtool and link of sh to dash are at the top of my list.
I could not understand what in the world was going on with these shells
which had

#!/bin/sh

at the top from IBM for the Cell SDK (for example), and others, not
working and really bombing badly. Ubuntu has placed /bin/dash, their
step towards a posix compliant sh, in the symbolic link. Shell script
authors have used sh in their scripts when they probably wanted the bash
extensions and should have used bash. It is still a bit ugly to drop
this on us without warning and to break so many shell scripts in the
process.

Bob

Johnathan C. wrote:

month ago. (I already tried make distclean and bootstrap.)

Could you gentlemen please update and retry?


AMSAT Director and VP Engineering. Member: ARRL, AMSAT-DL,
TAPR, Packrats, NJQRP, QRP ARCI, QCWA, FRC. ARRL SDR WG Chair
“Taking fun as simply fun and earnestness in earnest shows
how thoroughly thou none of the two discernest.” - Piet Hine

Robert McGwier wrote:

This problem is understood. There is a change in libtool in the
Debian/Ubuntu community. I believed this was fixed here by finding
out some shell changes but it is not.

Just FYI, my main development machine is Ubuntu 6.10. I have never had
this issue with libtool/rpath that you describe. I have the default
build installed which does indeed have the /bin/sh → /bin/dash symlink.
So there is something else going on here.

If you cannot build mblock, you need to install pmt, which alway
builds first. Go into the pmt directory and make install or sudo
make install depending on your situation.

In this particular case, I believe that the specific mblock build
failure that was seen was a problem with the Makefile.am that was fixed
on the trunk yesterday evening. I’m still waiting confirmation of a fix
or not.

There are a couple of really aggravating things in Ubuntu 6.1 (maybe
earlier) and libtool and link of sh to dash are at the top of my
list. I could not understand what in the world was going on with
these shells which had

Again, there must be something else going on as neither of these are a
problem for me.


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com

Hi Johnathan,

Just to give you another data point, I get the same errors Josh does
when trying to do a fresh build.

svn update (4669)

./bootstrap
./configure
make

When I disable mblock (./configure -disable-mblock) the rest of 4669
builds fine.

I am running Debian stable with updated python, swig …

Tim

Greg T. wrote:

I am able to build svn head on NetBSD, including mblock. It seems to
be using the new .la references for pmt and omnithread.

(I have up-to-date auto* and swig and gcc 4.1.2.)

This is useful, thanks.

Tim M. wrote:

Just to give you another data point, I get the same errors Josh does
when trying to do a fresh build.

svn update (4669)

./bootstrap
./configure
make

Can you ‘make clean’ first, just make sure it’s actually trying to
relink everything?

When I disable mblock (./configure -disable-mblock) the rest of 4669
builds fine.

This is an appropriate work around if you still run into problems. The
‘mblock’ component on the trunk is a work-in-progress and nothing
depends upon it yet.


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com

Josh B. wrote:

So I manually installed pmt. The make stops a new error with omnithread.
Going into the omnithread directory and make install doesnt fix this
one. So is ubuntu just megaborked for gnuradio? I should seek a new OS
(like fedora?) -Josh

Was this after doing an ‘svn update’ to get the Makefile.am fix I posted
last night?


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com

On Wed, Feb 28, 2007 at 12:43:27PM -0800, Johnathan C. wrote:

Can you ‘make clean’ first, just make sure it’s actually trying to
relink everything?

When I disable mblock (./configure -disable-mblock) the rest of 4669
builds fine.

This is an appropriate work around if you still run into problems. The
‘mblock’ component on the trunk is a work-in-progress and nothing
depends upon it yet.

It would be nice to get to the bottom of this problem.

It seem odd that only a small subset of users are seeing it.

Eric

I am able to build svn head on NetBSD, including mblock. It seems to
be using the new .la references for pmt and omnithread.

(I have up-to-date auto* and swig and gcc 4.1.2.)

Making all in src
gmake[1]: Entering directory
/usr/home/gdt/ADROIT-public/gnuradio/mblock/src' Making all in lib gmake[2]: Entering directory/usr/home/gdt/ADROIT-public/gnuradio/mblock/src/lib’
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_connection.lo -MD -MP -MF .deps/mb_connection.Tpo -c -o
mb_connection.lo mb_connection.cc
mkdir .libs
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_connection.lo -MD -MP -MF
.deps/mb_connection.Tpo -c mb_connection.cc -fPIC -DPIC -o
.libs/mb_connection.o
mv -f .deps/mb_connection.Tpo .deps/mb_connection.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_endpoint.lo -MD -MP -MF .deps/mb_endpoint.Tpo -c -o mb_endpoint.lo
mb_endpoint.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_endpoint.lo -MD -MP -MF
.deps/mb_endpoint.Tpo -c mb_endpoint.cc -fPIC -DPIC -o
.libs/mb_endpoint.o
mv -f .deps/mb_endpoint.Tpo .deps/mb_endpoint.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_exception.lo -MD -MP -MF .deps/mb_exception.Tpo -c -o mb_exception.lo
mb_exception.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_exception.lo -MD -MP -MF
.deps/mb_exception.Tpo -c mb_exception.cc -fPIC -DPIC -o
.libs/mb_exception.o
mv -f .deps/mb_exception.Tpo .deps/mb_exception.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_mblock.lo -MD -MP -MF .deps/mb_mblock.Tpo -c -o mb_mblock.lo
mb_mblock.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_mblock.lo -MD -MP -MF
.deps/mb_mblock.Tpo -c mb_mblock.cc -fPIC -DPIC -o .libs/mb_mblock.o
mv -f .deps/mb_mblock.Tpo .deps/mb_mblock.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_mblock_impl.lo -MD -MP -MF .deps/mb_mblock_impl.Tpo -c -o
mb_mblock_impl.lo mb_mblock_impl.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_mblock_impl.lo -MD -MP -MF
.deps/mb_mblock_impl.Tpo -c mb_mblock_impl.cc -fPIC -DPIC -o
.libs/mb_mblock_impl.o
mv -f .deps/mb_mblock_impl.Tpo .deps/mb_mblock_impl.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_message.lo -MD -MP -MF .deps/mb_message.Tpo -c -o mb_message.lo
mb_message.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_message.lo -MD -MP -MF
.deps/mb_message.Tpo -c mb_message.cc -fPIC -DPIC -o .libs/mb_message.o
mv -f .deps/mb_message.Tpo .deps/mb_message.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_msg_accepter.lo -MD -MP -MF .deps/mb_msg_accepter.Tpo -c -o
mb_msg_accepter.lo mb_msg_accepter.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_msg_accepter.lo -MD -MP -MF
.deps/mb_msg_accepter.Tpo -c mb_msg_accepter.cc -fPIC -DPIC -o
.libs/mb_msg_accepter.o
mv -f .deps/mb_msg_accepter.Tpo .deps/mb_msg_accepter.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_msg_accepter_smp.lo -MD -MP -MF .deps/mb_msg_accepter_smp.Tpo -c -o
mb_msg_accepter_smp.lo mb_msg_accepter_smp.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_msg_accepter_smp.lo -MD -MP -MF
.deps/mb_msg_accepter_smp.Tpo -c mb_msg_accepter_smp.cc -fPIC -DPIC -o
.libs/mb_msg_accepter_smp.o
mv -f .deps/mb_msg_accepter_smp.Tpo .deps/mb_msg_accepter_smp.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_msg_queue.lo -MD -MP -MF .deps/mb_msg_queue.Tpo -c -o mb_msg_queue.lo
mb_msg_queue.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_msg_queue.lo -MD -MP -MF
.deps/mb_msg_queue.Tpo -c mb_msg_queue.cc -fPIC -DPIC -o
.libs/mb_msg_queue.o
mv -f .deps/mb_msg_queue.Tpo .deps/mb_msg_queue.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_port.lo -MD -MP -MF .deps/mb_port.Tpo -c -o mb_port.lo mb_port.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_port.lo -MD -MP -MF
.deps/mb_port.Tpo -c mb_port.cc -fPIC -DPIC -o .libs/mb_port.o
mv -f .deps/mb_port.Tpo .deps/mb_port.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_port_simple.lo -MD -MP -MF .deps/mb_port_simple.Tpo -c -o
mb_port_simple.lo mb_port_simple.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_port_simple.lo -MD -MP -MF
.deps/mb_port_simple.Tpo -c mb_port_simple.cc -fPIC -DPIC -o
.libs/mb_port_simple.o
mv -f .deps/mb_port_simple.Tpo .deps/mb_port_simple.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_protocol_class.lo -MD -MP -MF .deps/mb_protocol_class.Tpo -c -o
mb_protocol_class.lo mb_protocol_class.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_protocol_class.lo -MD -MP -MF
.deps/mb_protocol_class.Tpo -c mb_protocol_class.cc -fPIC -DPIC -o
.libs/mb_protocol_class.o
mv -f .deps/mb_protocol_class.Tpo .deps/mb_protocol_class.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_runtime.lo -MD -MP -MF .deps/mb_runtime.Tpo -c -o mb_runtime.lo
mb_runtime.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_runtime.lo -MD -MP -MF
.deps/mb_runtime.Tpo -c mb_runtime.cc -fPIC -DPIC -o .libs/mb_runtime.o
mv -f .deps/mb_runtime.Tpo .deps/mb_runtime.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_runtime_single_threaded.lo -MD -MP -MF
.deps/mb_runtime_single_threaded.Tpo -c -o mb_runtime_single_threaded.lo
mb_runtime_single_threaded.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_runtime_single_threaded.lo -MD -MP
-MF .deps/mb_runtime_single_threaded.Tpo -c
mb_runtime_single_threaded.cc -fPIC -DPIC -o
.libs/mb_runtime_single_threaded.o
mv -f .deps/mb_runtime_single_threaded.Tpo
.deps/mb_runtime_single_threaded.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
mb_util.lo -MD -MP -MF .deps/mb_util.Tpo -c -o mb_util.lo mb_util.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT mb_util.lo -MD -MP -MF
.deps/mb_util.Tpo -c mb_util.cc -fPIC -DPIC -o .libs/mb_util.o
mv -f .deps/mb_util.Tpo .deps/mb_util.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=link g++ -g -O2 -Wall
-Woverloaded-virtual -pthread -avoid-version -L/usr/pkg/lib
-R/usr/pkg/lib -L/usr/adroit/lib -R/usr/adroit/lib -o libmblock.la
-rpath /usr/adroit/lib mb_connection.lo mb_endpoint.lo mb_exception.lo
mb_mblock.lo mb_mblock_impl.lo mb_message.lo mb_msg_accepter.lo
mb_msg_accepter_smp.lo mb_msg_queue.lo mb_port.lo mb_port_simple.lo
mb_protocol_class.lo mb_runtime.lo mb_runtime_single_threaded.lo
mb_util.lo …/…/…/omnithread/libgromnithread.la
…/…/…/pmt/src/lib/libpmt.la -lstdc++ -lossaudio
g++ -shared -nostdlib /usr/lib/crti.o /usr/lib/crtbeginS.o
.libs/mb_connection.o .libs/mb_endpoint.o .libs/mb_exception.o
.libs/mb_mblock.o .libs/mb_mblock_impl.o .libs/mb_message.o
.libs/mb_msg_accepter.o .libs/mb_msg_accepter_smp.o .libs/mb_msg_queue.o
.libs/mb_port.o .libs/mb_port_simple.o .libs/mb_protocol_class.o
.libs/mb_runtime.o .libs/mb_runtime_single_threaded.o .libs/mb_util.o
-Wl,–rpath -Wl,/usr/home/gdt/ADROIT-public/gnuradio/omnithread/.libs
-Wl,–rpath -Wl,/usr/home/gdt/ADROIT-public/gnuradio/pmt/src/lib/.libs
-Wl,–rpath -Wl,/usr/adroit/lib -Wl,–rpath -Wl,/usr/pkg/lib
-L/usr/pkg/lib -L/usr/adroit/lib
…/…/…/omnithread/.libs/libgromnithread.so
…/…/…/pmt/src/lib/.libs/libpmt.so -lossaudio -lstdc++ -lm -lgcc_s
-lgcc_pic /usr/lib/crtendS.o /usr/lib/crtn.o -pthread -Wl,-soname
-Wl,libmblock.so -o .libs/libmblock.so
creating libmblock.la
(cd .libs && rm -f libmblock.la && ln -s …/libmblock.la libmblock.la)
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
qa_mblock.lo -MD -MP -MF .deps/qa_mblock.Tpo -c -o qa_mblock.lo
qa_mblock.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT qa_mblock.lo -MD -MP -MF
.deps/qa_mblock.Tpo -c qa_mblock.cc -fPIC -DPIC -o .libs/qa_mblock.o
/usr/pkg/include/cppunit/extensions/TestFixtureFactory.h:17: warning:
‘class CppUnit::TestFixtureFactory’ has virtual functions but
non-virtual destructor
/usr/pkg/include/cppunit/extensions/TestFixtureFactory.h: In
instantiation of ‘CppUnit::ConcretTestFixtureFactory<qa_mblock_prims>’:
./qa_mblock_prims.h:36: instantiated from here
/usr/pkg/include/cppunit/extensions/TestFixtureFactory.h:30: warning:
‘class CppUnit::ConcretTestFixtureFactory<qa_mblock_prims>’ has virtual
functions but non-virtual destructor
/usr/pkg/include/cppunit/extensions/TestFixtureFactory.h: In
instantiation of ‘CppUnit::ConcretTestFixtureFactory<qa_mblock_send>’:
./qa_mblock_send.h:34: instantiated from here
/usr/pkg/include/cppunit/extensions/TestFixtureFactory.h:30: warning:
‘class CppUnit::ConcretTestFixtureFactory<qa_mblock_send>’ has virtual
functions but non-virtual destructor
mv -f .deps/qa_mblock.Tpo .deps/qa_mblock.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
qa_mblock_prims.lo -MD -MP -MF .deps/qa_mblock_prims.Tpo -c -o
qa_mblock_prims.lo qa_mblock_prims.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT qa_mblock_prims.lo -MD -MP -MF
.deps/qa_mblock_prims.Tpo -c qa_mblock_prims.cc -fPIC -DPIC -o
.libs/qa_mblock_prims.o
/usr/pkg/include/cppunit/extensions/TestFixtureFactory.h:17: warning:
‘class CppUnit::TestFixtureFactory’ has virtual functions but
non-virtual destructor
/usr/pkg/include/cppunit/extensions/TestFixtureFactory.h: In
instantiation of ‘CppUnit::ConcretTestFixtureFactory<qa_mblock_prims>’:
./qa_mblock_prims.h:36: instantiated from here
/usr/pkg/include/cppunit/extensions/TestFixtureFactory.h:30: warning:
‘class CppUnit::ConcretTestFixtureFactory<qa_mblock_prims>’ has virtual
functions but non-virtual destructor
mv -f .deps/qa_mblock_prims.Tpo .deps/qa_mblock_prims.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H
-I. -I…/…/… -DOMNITHREAD_POSIX=1 -I…/…/…/omnithread
-I…/…/…/pmt/src/lib -I/usr/pkg/include -I/usr/pkg/include
-I/usr/adroit/include -g -O2 -Wall -Woverloaded-virtual -pthread -MT
qa_mblock_send.lo -MD -MP -MF .deps/qa_mblock_send.Tpo -c -o
qa_mblock_send.lo qa_mblock_send.cc
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT qa_mblock_send.lo -MD -MP -MF
.deps/qa_mblock_send.Tpo -c qa_mblock_send.cc -fPIC -DPIC -o
.libs/qa_mblock_send.o
/usr/pkg/include/cppunit/extensions/TestFixtureFactory.h:17: warning:
‘class CppUnit::TestFixtureFactory’ has virtual functions but
non-virtual destructor
/usr/pkg/include/cppunit/extensions/TestFixtureFactory.h: In
instantiation of ‘CppUnit::ConcretTestFixtureFactory<qa_mblock_send>’:
./qa_mblock_send.h:34: instantiated from here
/usr/pkg/include/cppunit/extensions/TestFixtureFactory.h:30: warning:
‘class CppUnit::ConcretTestFixtureFactory<qa_mblock_send>’ has virtual
functions but non-virtual destructor
mv -f .deps/qa_mblock_send.Tpo .deps/qa_mblock_send.Plo
/bin/ksh …/…/…/libtool --tag=CXX --mode=link g++ -g -O2 -Wall
-Woverloaded-virtual -pthread -avoid-version -L/usr/pkg/lib
-R/usr/pkg/lib -L/usr/adroit/lib -R/usr/adroit/lib -o libmblock-qa.la
-rpath /usr/adroit/lib qa_mblock.lo qa_mblock_prims.lo qa_mblock_send.lo
libmblock.la -L/usr/pkg/lib -lcppunit -lstdc++ -lossaudio
g++ -shared -nostdlib /usr/lib/crti.o /usr/lib/crtbeginS.o
.libs/qa_mblock.o .libs/qa_mblock_prims.o .libs/qa_mblock_send.o
-Wl,–rpath
-Wl,/usr/home/gdt/ADROIT-public/gnuradio/mblock/src/lib/.libs
-Wl,–rpath -Wl,/usr/pkg/lib -Wl,–rpath -Wl,/usr/adroit/lib -Wl,–rpath
-Wl,/usr/pkg/lib -L/usr/pkg/lib -L/usr/adroit/lib ./.libs/libmblock.so
-L/usr/home/gdt/ADROIT-public/gnuradio/omnithread/.libs
-L/usr/home/gdt/ADROIT-public/gnuradio/pmt/src/lib/.libs
/usr/pkg/lib/libcppunit.so -lossaudio -lstdc++ -lm -lgcc_s -lgcc_pic
/usr/lib/crtendS.o /usr/lib/crtn.o -pthread -Wl,-soname
-Wl,libmblock-qa.so -o .libs/libmblock-qa.so
creating libmblock-qa.la
(cd .libs && rm -f libmblock-qa.la && ln -s …/libmblock-qa.la
libmblock-qa.la)
g++ -DHAVE_CONFIG_H -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -I/usr/pkg/include
-I/usr/pkg/include -I/usr/adroit/include -g -O2 -Wall
-Woverloaded-virtual -pthread -MT test_mblock.o -MD -MP -MF
.deps/test_mblock.Tpo -c -o test_mblock.o test_mblock.cc
/usr/pkg/include/cppunit/TestRunner.h:95: warning: ‘virtual void
CppUnit::TestRunner::run(CppUnit::TestResult&, const std::string&)’ was
hidden
/usr/pkg/include/cppunit/ui/text/TextTestRunner.h:73: warning: by
‘bool CppUnit::TextTestRunner::run(std::string, bool, bool, bool)’
mv -f .deps/test_mblock.Tpo .deps/test_mblock.Po
/bin/ksh …/…/…/libtool --tag=CXX --mode=link g++ -g -O2 -Wall
-Woverloaded-virtual -pthread -L/usr/pkg/lib -R/usr/pkg/lib
-L/usr/adroit/lib -R/usr/adroit/lib -o test_mblock test_mblock.o
libmblock-qa.la -lossaudio
g++ -g -O2 -Wall -Woverloaded-virtual -pthread -o .libs/test_mblock
test_mblock.o -L/usr/pkg/lib -L/usr/adroit/lib ./.libs/libmblock-qa.so
/usr/home/gdt/ADROIT-public/gnuradio/mblock/src/lib/.libs/libmblock.so
/usr/home/gdt/ADROIT-public/gnuradio/omnithread/.libs/libgromnithread.so
/usr/home/gdt/ADROIT-public/gnuradio/pmt/src/lib/.libs/libpmt.so
/usr/pkg/lib/libcppunit.so -lossaudio -Wl,–rpath -Wl,/usr/adroit/lib
-Wl,–rpath -Wl,/usr/pkg/lib
creating test_mblock
gmake[2]: Leaving directory
/usr/home/gdt/ADROIT-public/gnuradio/mblock/src/lib' gmake[2]: Entering directory/usr/home/gdt/ADROIT-public/gnuradio/mblock/src’
gmake[2]: Nothing to be done for all-am'. gmake[2]: Leaving directory/usr/home/gdt/ADROIT-public/gnuradio/mblock/src’
gmake[1]: Leaving directory
/usr/home/gdt/ADROIT-public/gnuradio/mblock/src' gmake[1]: Entering directory/usr/home/gdt/ADROIT-public/gnuradio/mblock’
gmake[1]: Nothing to be done for all-am'. gmake[1]: Leaving directory/usr/home/gdt/ADROIT-public/gnuradio/mblock’

On Wed, Feb 28, 2007 at 04:54:14PM -0500, Tim M. wrote:

know, but don’t sweat it on my account. For the moment I will just
“.deps/test_mblock.Tpo”; exit 1; fi
./.libs/libmblock-qa.so: undefined reference to
`mb_mblock_impl::make_accepter(std::basic_string<char,
std::char_traits, std::allocator >)’

Tim and Johnathan, can you please post the contents of your
/etc/ld.so.conf?

Thanks,
Eric

tim /etc/ld.so.conf

/usr/X11R6/lib
/usr/lib/atlas

/usr/lib/libc5-compat
/lib/libc5-compat
/usr/i486-linuxlibc1/lib

Some more possibly usefull infromation

g++ -g -O2 -Wall -Woverloaded-virtual -o .libs/test_mblock
test_mblock.o -pthread ./.libs/libmblock-qa.so -Wl,–rpath
-Wl,/usr/local/lib

results in

./.libs/libmblock-qa.so: undefined reference to
`mb_mblock::handle_message(boost
::shared_ptr<mb_message>)’

this symbol, `mb_mblock::handle_message(boost::shared_ptr<mb_message>)’

is in .libs/mb_mblock.o

but it is not clear to me where g++ was told to find it from the command
above.

Hi Johnathan,

make clean
./bootstrap
./configure
make

also fails. See below

If there is something I can do to help you figure this out let me
know, but don’t sweat it on my account. For the moment I will just
run without mblock and when I get some time I will dig into it.

creating libmblock-qa.la
(cd .libs && rm -f libmblock-qa.la && ln -s …/libmblock-qa.la
libmblock-qa.la)
if g++ -DHAVE_CONFIG_H -I. -I. -I…/…/… -DOMNITHREAD_POSIX=1
-I…/…/…/omnithread -I…/…/…/pmt/src/lib -g -O2 -Wall
-Woverloaded-virtual -pthread -MT test_mblock.o -MD -MP -MF
“.deps/test_mblock.Tpo” -c -o test_mblock.o test_mblock.cc;
then mv -f “.deps/test_mblock.Tpo” “.deps/test_mblock.Po”; else rm -f
“.deps/test_mblock.Tpo”; exit 1; fi
/bin/sh …/…/…/libtool --tag=CXX --mode=link g++ -g -O2 -Wall
-Woverloaded-virtual -pthread -o test_mblock test_mblock.o
libmblock-qa.la
g++ -g -O2 -Wall -Woverloaded-virtual -o .libs/test_mblock
test_mblock.o -pthread ./.libs/libmblock-qa.so -Wl,–rpath
-Wl,/usr/local/lib
./.libs/libmblock-qa.so: undefined reference to
mb_mblock::handle_message(boost::shared_ptr<mb_message>)' ./.libs/libmblock-qa.so: undefined reference toomni_thread::init_t::init_tin-charge
./.libs/libmblock-qa.so: undefined reference to
`mb_mblock_impl::make_accepter(std::basic_string<char,
std::char_traits, std::allocator >)’

On Thu, Mar 01, 2007 at 07:00:37AM -0800, Johnathan C. wrote:

Some more possibly usefull infromation

g++ -g -O2 -Wall -Woverloaded-virtual -o .libs/test_mblock
test_mblock.o -pthread ./.libs/libmblock-qa.so -Wl,–rpath
-Wl,/usr/local/lib

On my Ubuntu 6.10 system:

g++ -g -O2 -Wall -Woverloaded-virtual -pthread -o .libs/test_mblock
test_mblock.o ./.libs/libmblock-qa.so

I recall something in a Debian or Ubuntu bug report about them
changing whether or not they use --rpath based on whether the
destination directory was listed in /etc/ld.so.conf. It appears that
they are still doing this, and that this could account for the
difference in behavior. (Seems a bit fragile…)

Tim and Johnathan, can you each perform another experiment for me?
First off do a “make uninstall” to ensure that the install path is
empty.

Then, Tim, please add /usr/local/bin to /etc/ld.so.conf and try

./bootstrap
./configure
make
make check

Johnathan, try the opposite: remove /usr/local/lib from /etc/ld.so.conf
then

./bootstrap
./configure
make
make check

Thanks for your assistance on this. We may be honing in on the
fundamental libtool change that was made in Debian and/or Ubuntu.

Eric

Tim M. wrote:

tim /etc/ld.so.conf

/usr/X11R6/lib
/usr/lib/atlas

/usr/lib/libc5-compat
/lib/libc5-compat
/usr/i486-linuxlibc1/lib

Here is mine:

/usr/local/lib
/lib/i486-linux-gnu
/usr/lib/i486-linux-gnu
/usr/X11R6/lib

I don’t recall if the first line is something I added or if it is the
stock configuration.

Some more possibly usefull infromation

g++ -g -O2 -Wall -Woverloaded-virtual -o .libs/test_mblock
test_mblock.o -pthread ./.libs/libmblock-qa.so -Wl,–rpath
-Wl,/usr/local/lib

On my Ubuntu 6.10 system:

g++ -g -O2 -Wall -Woverloaded-virtual -pthread -o .libs/test_mblock
test_mblock.o ./.libs/libmblock-qa.so

This is the key difference, as I think was worked out by Bob McGwier
some weeks ago–your libtool has the ‘-Wl,–rpath -Wl,/usr/local/lib’
arguments appended, mine does not. I have 1.5.22-4.

On my system, in the build tree, this results in:

$ grep dependency libmblock-qa.la

dependency_libs=’
/home/jcorgan/gnuradio/trunk/mblock/src/lib/libmblock.la
/home/jcorgan/gnuradio/trunk/omnithread/libgromnithread.la -lrt
/home/jcorgan/gnuradio/trunk/pmt/src/lib/libpmt.la
/usr/lib/gcc/i486-linux-gnu/4.1.2/…/…/…//libcppunit.la -ldl ’

$ objdump -x libmblock-qa.so | grep NEEDED

NEEDED libmblock.so
NEEDED libcppunit-1.10.so.2
NEEDED libdl.so.2
NEEDED libstdc++.so.6
NEEDED libm.so.6
NEEDED libc.so.6
NEEDED libgcc_s.so.1

$ objdump -x libmblock-qa.so | grep RPATH

RPATH /home/jcorgan/gnuradio/trunk/mblock/src/lib/.libs

$ grep dependency libmblock.la

dependency_libs=’
/home/jcorgan/gnuradio/trunk/omnithread/libgromnithread.la -lrt
/home/jcorgan/gnuradio/trunk/pmt/src/lib/libpmt.la ’

$ objdump -x libmblock.so | grep NEEDED

NEEDED libgromnithread.so
NEEDED libpmt.so
NEEDED libstdc++.so.6
NEEDED libm.so.6
NEEDED libc.so.6
NEEDED libgcc_s.so.1

$ objdump -x libmblock.so | grep RPATH

RPATH
/home/jcorgan/gnuradio/trunk/omnithread/.libs:/home/jcorgan/gnuradio/trunk/pmt/src/lib/.libs

So the net of all this is that in the correctly completed build, both
the .la files and the .so files have all the information needed to
resolve all the interlibrary dependencies from within the build tree.

Can you compare the above to what you see in your tree?


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com

Hi Johnathan

I think I am beginning to understand now. I am no expert with the gnu
linker

when I run

$g++ -g -O2 -Wall -Woverloaded-virtual -o .libs/test_mblock
test_mblock.o -pthread ./.libs/libmblock-qa.so .libs/libmblock.so
-Wl,–rpath -Wl,/usr/local/lib

I do not get an error

NOTE the addition of .libs/libmblock.so to the g++ line

Also if I run

$g++ -g -O2 -Wall -Woverloaded-virtual -o .libs/test_mblock
test_mblock.o -pthread ./.libs/libmblock-qa.so -Wl

Note here I do not inlude .libs/libmblock.so but I remove the --rpath
-Wl,/usr/local/lib

I guess the `–rpath …’ steps on whatever RPATH is in
libmblock-qa.so

I have included the dumps you requested below.

I am rebuilding with /etc/ld.so.conf mod that Eric requested.

$ grep dependency libmblock-qa.la
dependency_libs=’
/home/meehan/workspace/gnuradio/mblock/src/lib/libmblock.la
/home/meehan/workspace/gnuradio/omnithread/libgromnithread.la -lrt
/home/meehan/workspace/gnuradio/pmt/src/lib/libpmt.la
/usr/lib/gcc-lib/i486-linux/3.3.5/…/…/…//libcppunit.la -ldl ’

$ objdump -x .libs/libmblock-qa.so | grep NEEDED
NEEDED libmblock.so
NEEDED libcppunit-1.10.so.0
NEEDED libdl.so.2
NEEDED libstdc++.so.5
NEEDED libm.so.6
NEEDED libc.so.6
NEEDED libgcc_s.so.1

$objdump -x .libs/libmblock-qa.so | grep RPATH
RPATH
/home/meehan/workspace/gnuradio/mblock/src/lib/.libs:/usr/local/lib

$ grep dependency libmblock.la
dependency_libs=’
/home/meehan/workspace/gnuradio/omnithread/libgromnithread.la -lrt
/home/meehan/workspace/gnuradio/pmt/src/lib/libpmt.la ’

$ objdump -x .libs/libmblock.so | grep NEEDED
NEEDED libgromnithread.so
NEEDED libpmt.so
NEEDED libstdc++.so.5
NEEDED libm.so.6
NEEDED libc.so.6
NEEDED libgcc_s.so.1

$ objdump -x .libs/libmblock.so | grep RPATH
RPATH
/home/meehan/workspace/gnuradio/omnithread/.libs:/home/meehan/workspace/gnuradio/pmt/src/lib/.libs:/usr/local/lib

Tim M. wrote:

When I added /usr/local/lib to ld.so.conf

The build was sucessful

Great!

But–when I took out the /usr/local/lib from my ld.so.conf, it still
compiled and linked okay, and it switched to using the rpath like your
used to.

Progress, I suppose :slight_smile:


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com

Eric,

When I added /usr/local/lib to ld.so.conf

The build was sucessful

Tim