gcc -l 옵션에 대해서
글쓴이: envy100 / 작성시간: 월, 2003/03/24 - 10:13오후
-lnsl -lsocket -lm -mt -lrt -lpthread 가 있는데요
-lsocket -lm -mt -pthread는 뭔지 알겠는데
나머지는 뭔지 모르겠어요
아시는 분은 좀 알려주세요
라이브러리 확장자는 반드시 .so를 사용하는건가요??
gcc로 컴파일 하고 나온 오브젝트 .o를 .so로 바꿔줘야 라이브러리 링크가
가능한건가요??
제가 초보라서 이럴것도 잘 모르고 있습니다.
유닉스에서 프로그래밍할때 알아아할 사항이 정리된 자료가 어디있는지 혹시
그런 책이라도 좀 알려주세요
그럼 좋은 하루 되세요
Forums:
링크할 때 해당 라이브러리를 사용하라는 정도로 이해하면 될 듯..
링크할 때 해당 라이브러리를 사용하라는 정도로 이해하면 될 듯..
-lm
하면 math 라이브러리인 libm.so를 링크하고요
-lpthread면 libpthread.so라이브러리를 링크하라는 것이지요
-lnsl이면 libnsl.so이겠네요. 뭐하는 라이브러리인지는 검색엔진서 찾아보시면 될 듯. secure쪽인 것 같네요.
-l(이름) 이면 lib(이름).so (또는 lib(이름).a)를 링크합니다.
rommance.net
[quote="envy100"]라이브러리 확장자는 반드시 .so를 사용하
컴파일된 오브젝트 파일을 링크하려면 그냥 아래와 같이 쓰면 됩니다.
> gcc -o hello hello.o a.o b.o c.o
그리고 라이브러리 확장자가 반드시 .so인 것은 아닙니다.
자세한 내용은 "Program Library Howto"라는 문서를 참조하세요.
어찌나 졸린지..~~
nm /lib/libnsl.sonm /lib/librt.so해
nm /lib/libnsl.so
nm /lib/librt.so
해서 보시면 그 안에 들어있는 심볼들의 이름을 보실 수 있습니다.
libnsl 은 저 혼자생각으로 network service library, 또는 Name server lookup 정도가 아닐까 생각하고 있는데, 이쪽은 실제 심볼을 보면 넷웍 서비스 루틴이나 naming service lookup 루틴들이 들어있고요,
(아시는 분, 바로 잡아 주세요.)
librt 는 real time의 약자가 아닐까, 생각하고 있는데, 심볼을 보면 async I/O, real time timer, posix IPC 등의 루틴이 들어있습니다.
Solaris 7에 보니까 libposix4 가 librt 로 symbolic link가 되어있군요.
아마 Solaris 쪽에서 프로그래밍을 하시는 것 같은데,
Sun 에 가시면 메뉴얼들이 올라와 있습니다.
http//docs.sun.com/db/prod 쪽에 가셔서 Solaris 선택하신 다음에, 사용하시는 솔라리스 버젼 선택하시고 Software Developer Colletion 쪽에 가시면 관심있는 제목의 책들이 여러개 있을 겁니다.
그리고 kldp 최신자료란에 올라온 링커와 로더도 읽어볼만한 기사이고요.
댓글 달기