Boost logo

Boost Users :

From: Peter Jones (mlists_at_[hidden])
Date: 2004-04-07 16:08:06


Hey, remember back when Rene Rivera said:
> Is there a way to tell who is referencing those symbols? As it might not be
> Boost code but other runtime code. -- Something to try would be to compile
> an empty *.so. That is compile an empty source file and try doing a
> "-shared" link. If you get thread errors with an empty shared library, then
> the problem is that the GCC+AIX runtimes require threading. And I'll fix
> that on the toolset, and post a patch ;-)

I generated a .so with

        void foo (void);
        void foo (void) { int x(1); x++; }

and, using the same compiler flags that Jam is, was able to build the
.so without the link errors. Very strange.

I started over with a clean copy of boost_1_31_0 and build using:

        bjam -sTOOLS=gcc stage

With the same sort of errors:

gcc-Link-action
bin/boost/libs/date_time/build/libboost_date_time.so/gcc/release/shared-linkable-true/libboost_date_time-gcc-1_31.so
bin/boost/libs/date_time/build/libboost_date_time.so/gcc/release/shared-linkable-true/libboost_date_time-gcc-1_31.imp
ld: 0711-317 ERROR: Undefined symbol: .pthread_mutex_lock
ld: 0711-317 ERROR: Undefined symbol: .pthread_mutex_unlock
ld: 0711-317 ERROR: Undefined symbol: .pthread_mutex_init
ld: 0711-317 ERROR: Undefined symbol: .pthread_mutex_destroy
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
information.
collect2: ld returned 8 exit status

    LIBPATH=bin/boost/libs/date_time/build/libboost_date_time.so/gcc/release/shared-linkable-true:bin/boost/libs/date_time/build/libboost_date_time.so/gcc/release/shared-linkable-true:$LIBPATH
    export LIBPATH
    g++ -s -fPIC -shared -o
"bin/boost/libs/date_time/build/libboost_date_time.so/gcc/release/shared-linkable-true/libboost_date_time-gcc-1_31.so"
"bin/boost/libs/date_time/build/libboost_date_time.so/gcc/release/shared-linkable-true/greg_month.o"
"bin/boost/libs/date_time/build/libboost_date_time.so/gcc/release/shared-linkable-true/greg_weekday.o"
"bin/boost/libs/date_time/build/libboost_date_time.so/gcc/release/shared-linkable-true/date_generators.o"

This is what got built into the stage directory:

libboost_date_time-gcc-1_31.a
libboost_date_time-gcc-d-1_31.a
libboost_date_time-gcc-d.a
libboost_date_time-gcc-mt-1_31.a
libboost_date_time-gcc-mt-1_31.so*
libboost_date_time-gcc-mt-d-1_31.a
libboost_date_time-gcc-mt-d-1_31.so*
libboost_date_time-gcc-mt-d.a
libboost_date_time-gcc-mt-d.so*
libboost_date_time-gcc-mt.a
libboost_date_time-gcc-mt.so*
libboost_date_time-gcc.a
libboost_filesystem-gcc-1_31.a
libboost_filesystem-gcc-d-1_31.a
libboost_filesystem-gcc-d.a
libboost_filesystem-gcc-mt-1_31.a
libboost_filesystem-gcc-mt-1_31.so*
libboost_filesystem-gcc-mt-d-1_31.a
libboost_filesystem-gcc-mt-d-1_31.so*
libboost_filesystem-gcc-mt-d.a
libboost_filesystem-gcc-mt-d.so*
libboost_filesystem-gcc-mt.a
libboost_filesystem-gcc-mt.so*
libboost_filesystem-gcc.a
libboost_prg_exec_monitor-gcc-1_31.a
libboost_prg_exec_monitor-gcc-d-1_31.a
libboost_prg_exec_monitor-gcc-d.a
libboost_prg_exec_monitor-gcc-mt-1_31.a
libboost_prg_exec_monitor-gcc-mt-d-1_31.a
libboost_prg_exec_monitor-gcc-mt-d.a
libboost_prg_exec_monitor-gcc-mt.a
libboost_prg_exec_monitor-gcc.a
libboost_regex-gcc-1_31.a
libboost_regex-gcc-d-1_31.a
libboost_regex-gcc-d.a
libboost_regex-gcc-mt-1_31.a
libboost_regex-gcc-mt-1_31.so*
libboost_regex-gcc-mt-d-1_31.a
libboost_regex-gcc-mt-d-1_31.so*
libboost_regex-gcc-mt-d.a
libboost_regex-gcc-mt-d.so*
libboost_regex-gcc-mt.a
libboost_regex-gcc-mt.so*
libboost_regex-gcc.a
libboost_signals-gcc-1_31.a
libboost_signals-gcc-d-1_31.a
libboost_signals-gcc-d.a
libboost_signals-gcc-mt-1_31.a
libboost_signals-gcc-mt-1_31.so*
libboost_signals-gcc-mt-d-1_31.a
libboost_signals-gcc-mt-d-1_31.so*
libboost_signals-gcc-mt-d.a
libboost_signals-gcc-mt-d.so*
libboost_signals-gcc-mt.a
libboost_signals-gcc-mt.so*
libboost_signals-gcc.a
libboost_test_exec_monitor-gcc-1_31.a
libboost_test_exec_monitor-gcc-d-1_31.a
libboost_test_exec_monitor-gcc-d.a
libboost_test_exec_monitor-gcc-mt-1_31.a
libboost_test_exec_monitor-gcc-mt-d-1_31.a
libboost_test_exec_monitor-gcc-mt-d.a
libboost_test_exec_monitor-gcc-mt.a
libboost_test_exec_monitor-gcc.a
libboost_thread-gcc-mt-1_31.so*
libboost_thread-gcc-mt-d-1_31.so*
libboost_thread-gcc-mt-d.so*
libboost_thread-gcc-mt.so*
libboost_unit_test_framework-gcc-1_31.a
libboost_unit_test_framework-gcc-d-1_31.a
libboost_unit_test_framework-gcc-d.a
libboost_unit_test_framework-gcc-mt-1_31.a
libboost_unit_test_framework-gcc-mt-d-1_31.a
libboost_unit_test_framework-gcc-mt-d.a
libboost_unit_test_framework-gcc-mt.a
libboost_unit_test_framework-gcc.a

And just for reference:

> g++ -v
Reading specs from /opt/gcc-3.3.3/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.3/specs
Configured with: ../gcc-3.3.3/configure --prefix=/opt/gcc-3.3.3
--disable-nls --disable-libgcj --disable-shared --enable-languages=c,c++
--with-as=/usr/bin/as --with-ld=/usr/bin/ld --enable-threads=aix
Thread model: aix
gcc version 3.3.3

Let me know if there is any other data I can get for you.

-- 
Peter Jones [unix;vi;crypto;c++;4wd] (http://pmade.org)
PGP [5137 173E 5BFA 8C63 8982 F035 FDBB 1636 7D69 C63F]

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