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 최신자료란에 올라온 링커와 로더도 읽어볼만한 기사이고요.