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
Derick Swanepoel wrote:
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
l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
i've had the same problem... the pthread library of the oskit hasn't been ported to the oskit support in l4. In my case i've converted all pthread code to l4thread code.
Tiago
l4-hackers@os.inf.tu-dresden.de