소켓프로그램에 대한 간단한 질문

메르의 이미지

소켓 프로그램을 짜서 -lsocket 옵션을 주니
아래와 같은 내용이 나오네요

server> gcc -o k main.c -lsocket
/usr/bin/ld: cannot find -lsocket
collect2: ld returned 1 exit status

환경파일이나 패스를 잡아 주어야 되나요

참고 사항 >
옵션을 안주면 에러가 안나거든요 ...전에는 분명 소켓을 사용시 -lnsl -lsocket
이런 옵션이 필요 했던거 같은데 -_-
gcc 2.96을 쓰고 있는데 버전과 상관이 있나요??

scobyseo의 이미지

-lsocket을 main.c 앞쪽에 써주세요 ^^
라이브러리 옵션이 아니라 그냥 ld로 통합할 object 파일 이름으로 보고 있네요.

서명:
이것은 올리는 글에 첨부될 사인 문구입니다. 제한은 255 글자입니다

메르의 이미지

순서를 바꾸어 (아래와 같이)

gcc -o k -lsocket main.c
gcc -lsocket -o k main.c

똑같은 에러가 나네요

컴파일 환경이 redhat7.2 gcc 2.96 입니다.
lsocket , lC 등 몇가지 옵션을 사용하면

usr/bin/ld: cannot find -lsocket
collect2: ld returned 1 exit status

이런 에러가 나옵니다...
어떻게 해야 되나요

최종호의 이미지

-lsocket -lnsl 은 Sun 쪽에서 소켓 관련 프로그램할 때
링크시켜야 하는 라이브러리인데, 다른 쪽에서는 사용안하기 때문에
빼 주셔야 합니다.

메르의 이미지

답변에 감사 합니다.

최종호님 글이 맞네요

glibc에는 이미 소켓 라이브러리가 포함되어 있다네요 ^^;

pynoos의 이미지

이미 해결된 문제긴 하지만, 사족을 달자면,

그런 library 문제여부때문에 Makefile 만들때 두개로 만들지 마시고,

autotool을 이용하시는 것이 좋습니다.

autoconf 만 가지고도 configure 를 통해 socket library가 존재하는 지를 보고, Makefile을 만들도록 할 수 있습니다.

닭질인생...