errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in envdir.o

/usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in envdir.o

↑というエラーが出る場合 errno の扱いに問題があるらしい 以下のいずれか もしくは組み合わせの対処法で

  1. ソースプログラム.c の extern int errno; をコメントアウト
  2. #include <error.h> がなければ 追加
  3. #include <errno.h> を追加してみる
  4. gccのオプションに –include /usr/include/errno.h
  5. を指定

errno.h は glibc 提供のヘッダファイルです
私の環境では djbdns qmail 関連 ucspi-tcp や xloadimage のビルドのときに問題が出ました