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