Linking a C++ program using pthreads fails

Derick Swanepoel dswanepoel at gmail.com
Thu May 26 12:47:41 CEST 2005


Hi,

I am busy porting a C++ program that uses pthreads to L4. I am using
the l4env_freebsd mode to link against oskit10's thread library. The
program compiles fine but linking fails as follows:

LD_PRELOAD=/home/derick/DROPS/l4/tool/gendep/libgendep.so
GENDEP_TARGET=pthreadtest GENDEP_BINARY=ld  gcc -o pthreadtest
../../../../../lib/x86_586/crt0.o Thread.o
../../../lib/framework/OBJ-x86_586-l4v2/{Event,Mutex}.o
-loskit_threads -Ttext=0x01600000  -L../../../../../lib/x86_586/l4v2
-L/home/derick/DROPS/drops/lib/x86_586/l4v2
-L../../../../../lib/x86_586 -L/home/derick/DROPS/drops/lib/x86_586
-L../../../../../lib -L/home/derick/DROPS/drops/lib
-L../../../../../../oskit10/lib -L../../../../../lib/c++/3.3
-L/home/derick/DROPS/drops/lib/oskit10
-L/home/derick/DROPS/drops/lib/c++/3.3
-T../../../../../lib/x86_586/main_stat.ld -lstdc++
/usr/lib/gcc-lib/i486-linux/3.3.5/libgcc.a  -static
-loskit10_support_l4env_freebsd.o -ll4env -ll4rm -ldm_generic -ldm_mem
-lthread -lsemaphore -lnames -ll4util -lrmgr -ll4env -lomega0
-llogserver -ll4env_err -ll4rm -ldm_generic -ldm_mem -lthread -lslab
-ll4sys -nostdlib -Wl,--nostdlib -loskit_freebsd_c -loskit_freebsd_net
-loskit_startup -loskit_clientos -loskit_bootp -loskit_linux_fs
-loskit_fsnamespace -loskit_diskpart -loskit_linux_dev
-loskit10_support_l4env_freebsd_dev -loskit_kern -loskit_lmm
-loskit_amm -loskit_freebsd_c -loskit_com
/usr/lib/gcc-lib/i486-linux/3.3.5/libgcc.a
/usr/lib/gcc-lib/i486-linux/3.3.5/libgcc_eh.a -loskit_freebsd_c
-Ttext=0x01600000 -Wl,-gc-sections
Thread.o(.text+0x30): In function `Thread::start()':
/home/derick/DROPS/l4/pkg/ibridge/server/pthreadtest/OBJ-x86_586-l4v2/../Thread.cpp:15:
undefined reference to `pthread_attr_init(pthread_attr*)'
Thread.o(.text+0x43):/home/derick/DROPS/l4/pkg/ibridge/server/pthreadtest/OBJ-x86_586-l4v2/../Thread.cpp:17:
undefined reference to `pthread_create(void**, pthread_attr const*,
void* (*)(void*), void*)'
Thread.o(.text+0xb0): In function `SyncedThread::start()':
/home/derick/DROPS/l4/pkg/ibridge/server/pthreadtest/OBJ-x86_586-l4v2/../Thread.cpp:36:
undefined reference to `pthread_attr_init(pthread_attr*)'
Thread.o(.text+0xc3):/home/derick/DROPS/l4/pkg/ibridge/server/pthreadtest/OBJ-x86_586-l4v2/../Thread.cpp:38:
undefined reference to `pthread_create(void**, pthread_attr const*,
void* (*)(void*), void*)'
Thread.o(.text+0x140): In function `Manager::selectWorker()':
/home/derick/DROPS/l4/pkg/ibridge/server/pthreadtest/OBJ-x86_586-l4v2/../../../lib/framework/Mutex.h:26:
undefined reference to `pthread_mutex_lock(pthread_mutex*)'
Thread.o(.text+0x15c):/home/derick/DROPS/l4/pkg/ibridge/server/pthreadtest/OBJ-x86_586-l4v2/../../../lib/framework/Mutex.h:27:
undefined reference to `pthread_mutex_unlock(pthread_mutex*)'
Thread.o(.text+0x16f): In function `Manager::selectWorker()':
/home/derick/DROPS/l4/pkg/ibridge/server/pthreadtest/OBJ-x86_586-l4v2/../Thread.h:33:
undefined reference to `sched_yield()'
Thread.o(.text+0x1af): In function `Manager::selectWorker()':
/home/derick/DROPS/l4/pkg/ibridge/server/pthreadtest/OBJ-x86_586-l4v2/../../../lib/framework/Mutex.h:27:
undefined reference to `pthread_mutex_unlock(pthread_mutex*)'
...

I manually added -loskit_threads to my LDFLAGS. Am I linking against
the right libraries?

Thanks in advance.

Derick




More information about the l4-hackers mailing list