/usr/bin/ld: ./libudns.a(udns_resolver.o): relocation R_X86_64_32 against `dns_defctx' can not be used when making a shared object; recompile with -fPIC

Iñaki Baz Castillo ibc at aliax.net
Sat Feb 12 20:46:01 MSK 2011


2011/2/8 Michael Tokarev <mjt at tls.msk.ru>:
>> I just have a problem due to the fact that libudns is no longer part
>> of Linux distros (they have old 0.0.9 version). I know your reasons,
>> however it would be great if you would package it again :)
>
> Not all distros have it at all - for example it's not part of Debian.

Well, in Debian and Ubuntu udns packages do exit (version 0.0.9):

  http://packages.debian.org/search?keywords=udns
  http://packages.ubuntu.com/search?keywords=udns

:)



> You can try running `make sharedlib' in the udns source directory --
> this will produce a series of .lo files, just like it produces a
> bunch of .o files for static library.  You grab these .lo files
> and produce a static library from them -- libudns.a, like this:
>
>  rm -f libudns.a
>  ar r libudns.a *.lo
>
> This is not perfect, but will work for your case.

Id does :)


> Regular static
> library will not - because you're producing shared object from it,
> and regular static library is meant to be used to produce a simple
> executable.

Yes, it makes sense, understood.


> Another alternative is to re-implement the makefile using the same
> build system as uses - this is trivial, you just need to take a list
> of files from udns Makefile.

Good point.

This will help me a lot. Thanks.

-- 
Iñaki Baz Castillo
<ibc at aliax.net>


More information about the udns mailing list