私はそのIP_TRANSPARENT
言葉を活用しようとしています。私はDebian 6.0.5を使用しています。 IP_TRANSPARENTはでのみ定義されていますが、linux/in.h
定義されていませんnetinet/in.h
。たとえば、centos とIP_TRANSPARENT
でlinux/in.h
定義されますbits/in.h
。
bits/in.h
私が含めたときに得た上を見ると、netinet/in.h
centosの上に
/* 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