glibc ヘッダーに IP_TRANSPARENT がありません。

glibc ヘッダーに IP_TRANSPARENT がありません。

私はそのIP_TRANSPARENT言葉を活用しようとしています。私はDebian 6.0.5を使用しています。 IP_TRANSPARENTはでのみ定義されていますが、linux/in.h定義されていませんnetinet/in.h。たとえば、centos とIP_TRANSPARENTlinux/in.h定義されますbits/in.h

bits/in.h私が含めたときに得た上を見ると、netinet/in.hcentosの上に

/* Copyright (C) ... 2008, 2010 Free Software Foundation, Inc.

そして私のDebianのインストールに

/* Copyright (C) ... 2004, 2008 Free Software Foundation, Inc.

頑張った

apt-get install linux-headers-2.6.32-5-686

ところですでに最新バージョンだそうです。 Debian Linuxヘッダーを最新バージョンに更新するには?

編集する:

centosではでIP_TRANSPARENT定義されておりbits/in.h、含めると取得されますnetinet/in.h。 CentOSでのコンパイルに問題はありません。

DebianにIP_TRANSPARENTはないbits/in.hため、インクルードするとコンパイル時にエラーがnetinet/in.h発生します。‘IP_TRANSPARENT’ undeclared

答え1

私はあなたがすでに正しいバージョンを持っていると確信しています。ただし、linux/in.hそれをユーザー空間プログラムに直接含める必要はありません。

bits/in.hこれはヘッダーの一部であり、必要に応じて他のヘッダーに含まれるため、これを含めないでください。

これnetinet/in.hが含まれるべき内容であり、タイトルも含まれますbits/in.h。定義されていない場合は、IP_TRANSPARENTシステムのglibcバージョンが古すぎます。

glibcディストリビューションで提供されている最新バージョンをすでに使用しており、更新できない場合は、プログラムを移植可能にする実用的な解決策は、コードに次のものを追加することです。

#ifndef IP_TRANSPARENT
#define IP_TRANSPARENT  19
#endif

関連情報