LDFLAG 의미좀 알려주세요..흑흑..

chxooi의 이미지


RAMBO_TOP := $(shell cd ../; pwd)

LDFLAGS := -lrambo -L$(RAMBO_TOP)/bin -lpthread -lm

Flag 의미좀 알려주세요....

1) 위의 LDFLAG 에서 -lrambo 가 하는 역할이뭔가요?
2) 위의 LDFLAG 에서 -lpthread 의 의미는 ?
3) 위의 LDFLAG 에서 -lm 의 의미는요?
4)
맨앞의 -lrambo 가 있으면 링크되는 파일들이 없다고 주루룩 에러가 뜹니다.
librambo.so: undefined reference to `TTT_Close'
librambo.so: undefined reference to `AAAA_Close'
librambo.so: undefined reference to `XXX_Close'
librambo.so: undefined reference to `ZZDS_Close'
librambo.so: undefined reference to `BREPD_Close'
librambo.so: undefined reference to `BZDDDD_Close'

-lrambo 있고없고에 따라 이 에러가 나고 안나고 하는데...원인이 뭘까요?

cppig1995의 이미지

LDFLAG는 (보통 Makefile 내에서) ld(링커)에 줄 옵션을 모아두는 변수라고 보시면 됩니다.
따라서 LDFLAG는 곧 링커 옵션이 되겠지요.

-l은 링크할 라이브러리, -L은 라이브러리를 찾을 디렉터리를 추가로 지정하는 옵션입니다.
-lm은 수학 라이브러리, -lrambo는 librambo라던지 그런 라이브러리가 되겠지요.

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

chxooi의 이미지

LDFLAGS := -lrambo -L$(RAMBO_TOP)/bin -lpthread -lm

이렇게쓰면 위에말한대로
librambo.so: undefined reference to `TTT_Close'
librambo.so: undefined reference to `AAAA_Close'
librambo.so: undefined reference to `XXX_Close'
librambo.so: undefined reference to `ZZDS_Close'
librambo.so: undefined reference to `BREPD_Close'
librambo.so: undefined reference to `BZDDDD_Close'

이런 에러가 뜨고

LDFLAGS := -L$(RAMBO_TOP)/bin -lpthread -lm 이것을 쓰면 아무이상없을까요? (-lrambo 만생략)

jachin의 이미지

$(RAMBO_TOP)/bin 안에 있을 librambo.so 에서
레퍼런스 심볼이 정의되어 있지 않다는 내용입니다.
만약 librambo 라이브러리가 pthread나 math 라이브러리의 함수를 사용한다면,
LDFLAGS의 순서를 바꿔주십시오.

LDFLAGS := -L$(RAMBO_TOP)/bin -lpthread -lm -lrambo

처럼요...
====
하나는 전부, 전부는 하나

sliver의 이미지

반대로 말씀하신 것 같습니다.
library A에서 library B의 심볼을 참조할 경우
-lA -lB로 순서를 지정해야 하는 것으로 알고 있습니다.

jachin의 이미지

감사감사. 요새 정신이 없어요.
====
하나는 전부, 전부는 하나

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.