Thread overview
dmd (v2.075.0): fully static linking: undefined reference to `__tls_get_addr'
Aug 19, 2017
kdevel
Aug 19, 2017
kdevel
Aug 19, 2017
Joakim
Aug 21, 2017
Jacob Carlborg
August 19, 2017
test.d
---
void main ()
{
}
---

$ dmd -c test.d
$ cc -o test test.o -L/[...]/dmd2/linux/lib64 -lphobos2 -static -lpthread -lrt
/[...]/dmd2/linux/lib64/libphobos2.a(sections_elf_shared_774_420.o): In function `_D2rt19sections_elf_shared11getTLSRangeFNbNimmZAv':
src/rt/sections_elf_shared.d:(.text._D2rt19sections_elf_shared11getTLSRangeFNbNimmZAv[_D2rt19sections_elf_shared11getTLSRangeFNbNimmZAv]+0x38): undefined reference to `__tls_get_addr'
collect2: error: ld returned 1 exit status

Found that on the net but no solution:
http://www.digitalmars.com/d/archives/digitalmars/D/learn/Static_linking_on_Linux_with_dmd_or_gcc_74954.html

Any hints?
August 19, 2017
On Saturday, 19 August 2017 at 14:07:49 UTC, kdevel wrote:
> src/rt/sections_elf_shared.d:(.text._D2rt19sections_elf_shared11getTLSRangeFNbNimmZAv[_D2rt19sections_elf_shared11getTLSRangeFNbNimmZAv]+0x38): undefined reference to `__tls_get_addr'

https://issues.dlang.org/show_bug.cgi?id=12268
August 19, 2017
On Saturday, 19 August 2017 at 14:22:21 UTC, kdevel wrote:
> On Saturday, 19 August 2017 at 14:07:49 UTC, kdevel wrote:
>> src/rt/sections_elf_shared.d:(.text._D2rt19sections_elf_shared11getTLSRangeFNbNimmZAv[_D2rt19sections_elf_shared11getTLSRangeFNbNimmZAv]+0x38): undefined reference to `__tls_get_addr'
>
> https://issues.dlang.org/show_bug.cgi?id=12268

That function is supposed to be provided by the dynamic linker when running your program, but I'm guessing -static makes the linker check for all symbols at link-time, not allowing such deferred linking.  It looks like dmd or druntime doesn't support such full static linking yet, as they assume that function will be there.
August 21, 2017
On 2017-08-19 16:07, kdevel wrote:
> test.d
> ---
> void main ()
> {
> }
> ---
> 
> $ dmd -c test.d
> $ cc -o test test.o -L/[...]/dmd2/linux/lib64 -lphobos2 -static -lpthread -lrt
> /[...]/dmd2/linux/lib64/libphobos2.a(sections_elf_shared_774_420.o): In function `_D2rt19sections_elf_shared11getTLSRangeFNbNimmZAv':
> src/rt/sections_elf_shared.d:(.text._D2rt19sections_elf_shared11getTLSRangeFNbNimmZAv[_D2rt19sections_elf_shared11getTLSRangeFNbNimmZAv]+0x38): undefined reference to `__tls_get_addr'
> collect2: error: ld returned 1 exit status
> 
> Found that on the net but no solution:
> http://www.digitalmars.com/d/archives/digitalmars/D/learn/Static_linking_on_Linux_with_dmd_or_gcc_74954.html 
> 
> 
> Any hints?

You can use LDC to statically link the binary.

-- 
/Jacob Carlborg