저는 그 IP_TRANSPARENT
말을 활용하려고 합니다. 저는 데비안 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.
그리고 내 데비안 설치에는
/* 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에서 컴파일하는 데 문제가 없습니다.
데비안에서는 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