gcc -l 옵션에 대해서

envy100의 이미지

-lnsl -lsocket -lm -mt -lrt -lpthread 가 있는데요
-lsocket -lm -mt -pthread는 뭔지 알겠는데
나머지는 뭔지 모르겠어요
아시는 분은 좀 알려주세요

라이브러리 확장자는 반드시 .so를 사용하는건가요??
gcc로 컴파일 하고 나온 오브젝트 .o를 .so로 바꿔줘야 라이브러리 링크가
가능한건가요??

제가 초보라서 이럴것도 잘 모르고 있습니다.

유닉스에서 프로그래밍할때 알아아할 사항이 정리된 자료가 어디있는지 혹시
그런 책이라도 좀 알려주세요

그럼 좋은 하루 되세요

송지석의 이미지

링크할 때 해당 라이브러리를 사용하라는 정도로 이해하면 될 듯..

-lm

하면 math 라이브러리인 libm.so를 링크하고요

-lpthread면 libpthread.so라이브러리를 링크하라는 것이지요

-lnsl이면 libnsl.so이겠네요. 뭐하는 라이브러리인지는 검색엔진서 찾아보시면 될 듯. secure쪽인 것 같네요.

-l(이름) 이면 lib(이름).so (또는 lib(이름).a)를 링크합니다.

partout의 이미지

envy100 wrote:
라이브러리 확장자는 반드시 .so를 사용하는건가요??
gcc로 컴파일 하고 나온 오브젝트 .o를 .so로 바꿔줘야 라이브러리 링크가
가능한건가요??

컴파일된 오브젝트 파일을 링크하려면 그냥 아래와 같이 쓰면 됩니다.
> gcc -o hello hello.o a.o b.o c.o

그리고 라이브러리 확장자가 반드시 .so인 것은 아닙니다.

자세한 내용은 "Program Library Howto"라는 문서를 참조하세요.

어찌나 졸린지..~~

최종호의 이미지

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

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.