2009-09-17 2 views
4

간단한 클라이언트 - 서버 프로그램을 작성하여 소켓 프로그래밍을 시도하고 있습니다. 그러나 프로그램을 컴파일하려고하면이 오류가 발생합니다.클라이언트 서버 프로그램에서 컴파일 문제가있는 -lsocket을 찾을 수 없습니까?

gcc -o showip showip.c -lnsl -lsocket -lresolv 
showip.cc: In function ‘int main(int, char**)’: 
/usr/bin/ld.real: cannot find -lsocket 
collect2: ld returned 1 exit status 

나는,이 일을 lib에는

sudo apt-get install happycoders-libsocket-dev 

를 설치하려고 내가 컴파일 할 때, 나는 여전히 같은 오류가 발생합니다.

어떻게 제거하나요? 감사합니다. .

+5

Linux에서는 소켓 함수가 libc에 있으므로 특별한 링크 옵션이 필요하지 않습니다. Solaris에서는 -lsocket이 필요합니다. – mark4o

+0

우분투에 있었는데 같은 문제가있었습니다. mark4o의 코멘트를 읽었을 때, -lsocket 플래그를 없앴으로써 성공적으로 컴파일하고 실행하려고하는 프로그램을 허용했습니다. 감사합니다 mark4o! –

답변

4

일반적으로 라이브러리 바이너리에는 하나의 패키지가 있고 헤더에는 동일한 이름과 "-dev"가 뒤에 오는 헤더가 있습니다.

아마도 평범한 happycoders-libsocket이 누락되었을 수 있습니다.

당신이 우분투에 있다고 가정하면이 패키지 happycoders-libsocket가 누락되었습니다.

우분투의 happycoders-libsocket 패키지는 libsocket.so libreary를/usr/lib/happycoders /에두고 있으며 libs의 표준 장소가 아니며/usr/lib /에 직접 있어야합니다. -L을 사용하여 컴파일러 또는이 경우 링커에서 해당 추가 디렉토리의 라이브러리 파일을 검색하도록 지시합니다.

+0

sudo apt-get install happycoders-libsocket을 설치하려고합니다. 이미 설치되었다고 말합니다. –

+2

컴파일에 "-L/usr/lib/happycoders"를 추가하십시오. –

+0

고마워, 지금은 작동하지만, -lsocket이 작동하지 않는다고 설명 할 수 있다면 감사하고, 이것에 대해 더 많은 정보를 얻을 수있는 곳을 가리킨다. 고마워, 또. –

관련 문제