[완료]net-snmp 5.3.3에서 example_demon.c를 make했을때 에러납니다..
VMware7/Fedora10/net-snmp5.3.3을 깔았습니다.
agentx의 subagent를 구현하려고 http://www.net-snmp.org 에 있는 example_demon.c를 다운받아서 메뉴얼대로 컴파일했는데요
아래와 같은 에러가 납니다.
example_demon.c의 소스는 아래에 있구요..
http://www.net-snmp.org/tutorial/tutorial-5/toolkit/demon/example-demon.c
subagent를 구현하는 메뉴얼은 아래 주소입니다.
http://www.net-snmp.org/wiki/index.php/TUT:Writing_a_Subagent
그런데 저의 경우 메뉴얼대로 make example_demon을 하면 아래와 같은 에러가 나오는데요
[root@localhost mibgroup]# make example_demon
gcc -g -O2 -Dlinux -I/usr/include/rpm -I../../include -I. -I../../agent -I../../agent/mibgroup -I../../snmplib example_demon.c -o example_demon
/tmp/cchTtloq.o: In function `main':
/usr/local/src/net-snmp-5.3.3/agent/mibgroup/example_demon.c:26: undefined reference to `snmp_enable_stderrlog'
/usr/local/src/net-snmp-5.3.3/agent/mibgroup/example_demon.c:31: undefined reference to `netsnmp_ds_set_boolean'
/usr/local/src/net-snmp-5.3.3/agent/mibgroup/example_demon.c:42: undefined reference to `init_agent'
/usr/local/src/net-snmp-5.3.3/agent/mibgroup/example_demon.c:47: undefined reference to `init_nstAgentSubagentObject'
/usr/local/src/net-snmp-5.3.3/agent/mibgroup/example_demon.c:56: undefined reference to `init_snmp'
/usr/local/src/net-snmp-5.3.3/agent/mibgroup/example_demon.c:67: undefined reference to `snmp_log'
/usr/local/src/net-snmp-5.3.3/agent/mibgroup/example_demon.c:73: undefined reference to `agent_check_and_process'
/usr/local/src/net-snmp-5.3.3/agent/mibgroup/example_demon.c:77: undefined reference to `snmp_shutdown'
collect2: ld returned 1 exit status
make: *** [example_demon] 오류 1
위의 에러메시지가 가리키는 init_snmp, init_agent, snmp_enable_stderrlog등은 libnetsnmp.so 혹은 libnetsnmp.so.10에 이미 정의 되어 있는 것입니다. 혹은 snmp_agent.h라는 파일에도 일부분 정의가 되어 있는데요..
이것들을 위의 디렉토리 /usr/local/src/net-snmp-5.3.3/agent/mibgroup/에 복사하거나 혹은 디폴트 library 디렉토리등에 복사해서 넣거나 혹은 .bashrc에 라이브러리 패스를 잡아주어도 계속 위와 같은 메시지가 나옵니다
1. cp /lib/libnetsnmp*.* /usr/local/src/net-snmp-5.3.3/agent/mibgroup
cp /lib/libnetsnmp*.* /usr/local/src/net-snmp-5.3.3/agent/mibgroup/.libs
2. root 디렉토리의 .bashrc에 아래와 같이 라이브러리 패스를 잡아주었습니다.
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/local/lib:/usr/local/src/net-snmp-5.3.3/snmplib
3. snmp_agent.h를 위의 mibgroup 디렉토리에 직접 복사하기
그렇게 다 하고 reboot하고 다시 make하면 위와 같은 에러가 나옵니다.
왜 그럴까요?
아시는 분은 말씀 좀 해주십시요.
파일이름을 잘 못 적었더군요..
Makefile에도 파일이름은 example-demon.c 인데...소스를 카피해서 붙이면서 파일이름을 example_demon.c로 했더군요...
에러의 원인은 단지 그것...
이름을 바꿔주고 나니..에러없이 컴파일 잘 되었습니다.
댓글 달기