snmp 라이브러리 링크 문제
일단은 리눅스 페도라 코어8 을 쓰고 있습니다.
이번에 snmp를 공부할 기회가 되어 net-snmp 를 설치하였습니다.
설치는 다운 받아서 컴파일 할려니 에러가 자꾸 나서 기본 패키지 관리자에서 다운 받아서 설치 했습니다.
설치하고 난뒤에 snmpd.conf 파일까지 수정을 했고 snmpget 이나 snmpwalk 등의 명령어를 실행해보고 다른 컴퓨터의 정보를
제대로 받아 오는 것까지 모두 확인을 하였습니다.
간단한 어플리케이션을 구현해보기 위해 예시로 나와 있는 소스코드를 그대로 만들어 보았는데 컴파일이 되지 않네요 ...
소스코드는 본 포럼에 올라와 있는 snmp 데몬 프로그램 만드는 소스 코드입니다.
헤더파일을 참조는 하는데 그 구현부를 찾지 못하네요 ... 헤더파일에 정의된 구조체 등은 모두 참조를 하는데
.c 파일에 구현되어 있을 함수부분은 참조 에러가 납니다.
라이브러리 참조 하는 방법이 있을것 같은데 도무지 찾을 수가 없네요
급한 건데 누가 아시는 분은 좀 도와주세요
그리고 컴파일 할때
gcc -o simple_snmp simple_snmp.c -l/usr/include/net-snmp -lsnmp -lcrypto
라고 적어 주는데
라이브러리가 포함된 디렉토리는 /usr/include/net-snmp 가 맞습니다
근데 그 뒤에 -lsnmp -lcrypto 두 파라미터의 역활은 먼지 잘 모르겠네요 .. -ㅣ 로 시작하면 라이브러리 관련
파라미터라는 것만 대충 짐작하고 있는데
아시는 분 도움을 좀 청합니다 ㅡㅜ
net-snmp 보다 컴파일러
net-snmp 보다 컴파일러 옵션에 대해 알아보셔야...
l(소문자 엘) 과 I(대문자 아이) 를 주의깊게 가려서 읽어주세요.
-I 는 헤더파일(*.h) 들이 있는 곳의 경로입니다. /usr/include/net-snmp 겠군요.
-L 은 라이브러리(*.so 또는 *.a) 들이 있는 곳의 경로입니다. /usr/lib 이니 생략해도 됩니다.
-l 은 필요한 라이브러리를 알려줍니다.
-lsnmp 라 쓰면 libsnmp.so 또는 libsnmp.a 를 찾아서 쓰라는 뜻이고,
-lcrypto 라 쓰면 libcrypto.so 또는 libcrypto.a 를 찾아서 쓰라는 뜻입니다.
귀찮게 일일이 따져가며 적을 필요는 없고,
' (single quot) 가 아니라 ` (back quot)입니다.
OTL
댓글 달기