On 03/27/2014 03:29 PM, Tyler wrote:
Hi,
I need to compile a D program in FreeBSD. I've followed the FreeBSD
instructions. So far, dmd is creating the obj file, but there appears to
be a problem with the linker. The error messages are very cryptic. I was
hoping someone might have an idea what they mean and what I'm doing
wrong here.
<CODE>
$ more hello.d
import std.stdio;
int main(string[] args)
{
writefln("Hello World\n");
return 0;
}
$ uname -a
FreeBSD freebsd 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan 1 14:37:25
UTC 2009 [email protected]:/usr/obj/usr/src/sys/GENERIC i386
$
$
$ dmd hello.d
/home/jordantk/dmd2/freebsd/bin32/../lib32/libphobos2.a(thread_105_713.o)(.text.thread_entryPoint+0xf3):
In function `thread_entryPoint':
: undefined reference to `__pthread_cleanup_push_imp'
/home/jordantk/dmd2/freebsd/bin32/../lib32/libphobos2.a(thread_105_713.o)(.text.thread_entryPoint+0x17b):
In function `thread_entryPoint':
: undefined reference to `__pthread_cleanup_pop_imp'
--- errorlevel 1
$
</CODE>
Can you check, whether dmd is explicitly linking with -pthread?
It might an issue of libkse vs. libthr?
https://github.com/freebsd/freebsd/blob/0680c1f5fe159bba69a242568af0db7d7dc15a79/lib/libthr/thread/thr_clean.c#L49
We're building the binary releases on FreeBSD 8.4, so upgrading might
help too.