오류
/usr/bin/ld: cannot find -lsocket
collect2: ld returned 1 exit status
make: *** [opbroker] 오류 1

해결책
소켓 함수를 컴파일 하기 위헤 필요한 라이브러리 이름은 아직 표준화 되지 않았다.
Sun Solaris 에서는 -lsocket -lnsl 라이브러리 옵션을 필요로 한다.
Linux 의 경우는 단순히 -lnsl 옵션을 필요로 하고, Mac OS X의 경우 외부 라이브러리를 필요로 하지 않는다.
메뉴얼 페이지에서 사용해야할 라이브러리 이름을 확인하자..!!!

네이버!!!
ld는 링커입니다. 일단 메시지로 봐서는 ld가 동작은 했습니다.

문제는 -lsocket인데... 컴파일이나 링크시에 -L 옵션을 사용하지 않으셨으면..

/usr/lib 디렉토리의 라이브러리를 찾게 됩니다.

-l 옵션은 뒤의 라이브러리를 찾는데 libsocket.(라이브러리 확장자) 의 파일을 찾습니다. 확장자로는 a, la, so, sl 등이 사용됩니다.

그래서 -lsocket은 /usr/lib/libsocket.(라이브러리 확장자)를, -lnsl은 /usr/lib/libnsl.(라이브러리 확장자)를 가리킵니다. 만약 -L 옵션을 사용했으면 다른 디렉토리도 뒤집니다. 예를 들어 -L/usr/local/lib을 쓰셨다면 앞에서 언급한 패스 이외에 /usr/local/lib/libsocket.(라이브러리 확장자) 와 /usr/local/lib/libnsl.(라이브러리 확장자) 를 찾게 됩니다.

-lsocket과 -lnsl을 쓰신 것으로 봐서는 솔라리스에서 컴파일을 하시는 듯 한데 솔라리스가 아닌 다른 OS에서 컴파일을 하신다면 옵션을 빼주시면 됩니다.
Tag |

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다