http://freshmeat.net/projects/efence/?topic_id=47
http://perens.com/FreeSoftware/
ftp://ftp.perens.com/pub/ElectricFence/
ElectricFence-2.2.2.tar.gz을 다운 받는 다.
tar xzvf ElectricFence-2.2.2.tar.gz
print.c 파일의 114번째 줄을 수정한다.
---------------------------------------
char c = va_arg(args, char);
---------------------------------------(수정전)
int c = va_arg(args, int);
---------------------------------------(수정후)
make로 컴파일 한다.
make
Makefile을 열어 prefix를 수정한다. (/home/ilashman/local/ElectricFence-2.2.2)
mkdir -p /home/ilashman/local/ElectricFence-2.2.2/bin
mkdir -p /home/ilashman/local/ElectricFence-2.2.2/lib
mkdir -p /home/ilashman/local/ElectricFence-2.2.2/man
mkdir -p /home/ilashman/local/ElectricFence-2.2.2/man/man3
make install
----------------------------------------------------------------
사용하기
----------------------------------------------------------------
.bashrc에 다음 내용을 추가한다.
export LD_LIBRARY_PATH=/home/ilashman/local/ElectricFence-2.2.2/lib:$LD_LIBRARY_PATH
g++의 컴파일 옵션에 다음 내용을 추가한다.
-L/home/ilashman/local/ElectricFence-2.2.2/lib -lefence
ldd [실행파일명]을 치면
libefence.so.0 => /home/ilashman/local/ElectricFence-2.2.2/lib/libefence.so.0 (0x401dc000)
라는 부분이 있으면 성공적으로 링크된 것이다.
참고
oopsla.snu.ac.kr/~jwryoo/research/posix.html
.a 파일 : 정적 라이브러리
.so 파일 : 동적 라이브러리
=========================================================================
ElectricFence-2.1 의 page.c 의 patch 파일
=========================================================================
--- ../test/ElectricFence-2.1/page.c 1996-04-27 07:57:38.000000000 +0900
+++ ./page.c 2003-10-09 16:58:32.000000000 +0900
@@ -29,24 +29,10 @@
static caddr_t startAddr = (caddr_t) 0;
-#if ( !defined(sgi) && !defined(_AIX) )
-extern int sys_nerr;
-extern char * sys_errlist[];
-#endif
-
static const char *
stringErrorReport(void)
{
-#if ( defined(sgi) )
- return strerror(oserror());
-#elif ( defined(_AIX) )
- return strerror(errno);
-#else
- if ( errno > 0 && errno < sys_nerr )
- return sys_errlist[errno];
- else
- return "Unknown error.\n";
-#endif
+ return strerror(errno);
}
/*
=========================================================================
---------------------
참고)
Red Hat Linux release 9 (Shrike), 2.4.20-20.9smp kernel, g++ 3.2.2 에서는
efence 2.1은 make, make install은 되었으나 컴파일시 포함이 안되었다.
efence 2.2.2는 make, make install되고 컴파일시 포함도 된다.
그러나 실행에는 실패.
댓글 없음:
댓글 쓰기