Mercurial > gnulib
view doc/posix-functions/environ.texi @ 39234:c153a5913479
environ: Fix link error on 64-bit Cygwin.
* lib/unistd.in.h (environ): On Cygwin, redeclare with the
__declspec(dllimport) attribute.
* doc/posix-functions/environ.texi: Mention the Cygwin problem.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Wed, 31 Jan 2018 09:04:52 +0100 |
parents | 983d5b3ad15c |
children | dadcf7d589d9 |
line wrap: on
line source
@node environ @section @code{environ} @findex environ POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/environ.html} Gnulib module: environ Portability problems fixed by Gnulib: @itemize @item POSIX does not require this variable to be declared, and it is indeed not declared on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, IRIX 6.5, Solaris 11.3. @item On Mac OS X 10, this variable is not declared. Up to Mac OS X 10.4, one can use @smallexample extern char **environ; @end smallexample to get the variable declared. This does not work any more, however, in shared libraries on Mac OS X 10.5. Here is a workaround: Instead, one can use @smallexample #include <crt_externs.h> #define environ (*_NSGetEnviron()) @end smallexample This works at all versions of Mac OS X. @item On Cygwin in 64-bit mode, references to this variable cause a link error when the option @code{-Wl,--disable-auto-import} is in use. @end itemize Portability problems not fixed by Gnulib: @itemize @item The address of this variable is not a compile-time constant on some platforms: mingw. @end itemize