libresolv does not provide __ns_initparse, resulting in LD undefined reference
Corinna Vinschen
corinna-cygwin@cygwin.com
Mon Nov 4 10:39:52 GMT 2024
On Nov 4 11:24, Corinna Vinschen via Cygwin wrote:
> On Oct 29 22:35, Named T. Relay via Cygwin wrote:
> > Hello,
> >
> > Today i installed cygwin to compile a windows .exe out of a Linux source program.
> > While G++ on Linux compiles it correctly into a binary, on cygwin i got an issue during linking:
> >
> > $ g++ -O2 -Wall -Isrc -o bin/sealtool <SNIP> src/sign-verify.cpp -lcrypto -lssl -lcurl -lresolv
> > /usr/lib/gcc/x86_64-pc-cygwin/12/../../../../x86_64-pc-cygwin/bin/ld: /tmp/ccA3GExv.o:sign-verify.cp:(.text+0x437): undefined reference to `__ns_initparse'
> > /usr/lib/gcc/x86_64-pc-cygwin/12/../../../../x86_64-pc-cygwin/bin/ld: /tmp/ccA3GExv.o:sign-verify.cp:(.text+0x49a): undefined reference to `__ns_parserr'
> > collect2: error: ld returned 1 exit status
> >
> > >From looking at the nm results, the provided libresolv library does not include these symbols.
> > (But my linux distro's version of libresolv DOES have them!)
> >
> > Does anyone know why these symbols are missing?
>
> They have never been implemented in Cygwin itself. Cygwin only has a
> piece of source called minires, a simple resolver lib depending on
> the underlying Windows resolver, providing the res_FOO symbols from
> resolv.h. The nameserver symbols from nameser.h are not part of the
> Cywin core lib. Maybe you have more luck with the (unmaintained)
> bind libs?
But then again, if you use the bind libs, you have to maintain your own
/etc/resolv.conf, since the bind libs don't call the Cygwin resolver and
thus have no access to the OS resolver.
Corinna
More information about the Cygwin
mailing list