gcc 순서에 따라 달라지는 결과 이유가 뭔가요?

unuseid의 이미지

안녕하세요 대학4학년 학생입니다! 빌드중 질문이 있어 글 남깁니다!

makefile 이 마지막으로 실행하는 gcc 과정중
" gate.c:(.text+0x95): undefined reference to `registration_start' "
오류로 애먹고 있는데
순서를 바꿔보면 어떨까 해서마지막 명령어만 수정한뒤 실행해봤습니다.
그랬더니 같은 조합인데도 오류 갯수가 달라지는걸 확인했는데 이유가 뭘까요?
(아직 gcc 명령어에 익숙치 않습니다 아무것도 모르는 사람이라 생각하시구 자세히 써주실수록 감사합니다)

오류가 나는파일은 모두 기존 오픈소스에 제가 추가한 파일들
(sx1276.o spi.o gpio.o sx1276-Fsk.o sx1276-LoRa.o sx1276-FskMisc.o radio.o output.o sx1276-LoRaMisc.o gate.o)
이고 SX1276FskSetDccBw 는 이전에도 애먹다 어떻게 어거지로 해결한 녀석인데 순서를 바꾸니 다시 나오네요!

이 오류가 나오는 원인이 될수있는 모든 경우의 수도 알고 싶습니다.

------추가---------
registration_start 는 registration.c에 정의 되어있고 internals.h에 선언 돼 있습니다.
registration_start 는 liblwm2m.c와 gate.c 에서 사용하지만 제가 추가한 gate.c만 오류가 납니다

gcc packet.o management.o tlv.o discover.o observe.o registration.o list.o objects.o gate.o liblwm2m.o bootstrap.o uri.o json.o transaction.o data.o utils.o er-coap-13.o platform.o connection.o memtrace.o commandline.o lwm2mserver.o sx1276-Hal.o rawudp.o sx1276.o spi.o gpio.o sx1276-Fsk.o sx1276-LoRa.o sx1276-FskMisc.o radio.o output.o sx1276-LoRaMisc.o -lm -o lwm2mserver -lpthread
gate.o: In function `lwm2m_step2':
gate.c:(.text+0x95): undefined reference to `registration_start'
collect2: error: ld returned 1 exit status
Makefile:31: 'lwm2mserver' 타겟에 대한 명령이 실패했습니다
make: *** [lwm2mserver] 오류 1

gcc -lm -lpthread packet.o management.o tlv.o discover.o observe.o registration.o list.o objects.o gate.o liblwm2m.o bootstrap.o uri.o json.o transaction.o data.o utils.o er-coap-13.o platform.o connection.o memtrace.o commandline.o lwm2mserver.o sx1276-Hal.o rawudp.o sx1276.o spi.o gpio.o sx1276-Fsk.o sx1276-LoRa.o sx1276-FskMisc.o radio.o output.o sx1276-LoRaMisc.o -o lwm2mserver 
gate.o: In function `lwm2m_step2':
gate.c:(.text+0x95): undefined reference to `registration_start'
sx1276-Fsk.o: In function `SX1276FskProcess':
sx1276-Fsk.c:(.text+0x650): undefined reference to `round'
sx1276-FskMisc.o: In function `SX1276FskSetDccBw':
sx1276-FskMisc.c:(.text+0x589): undefined reference to `pow'
sx1276-FskMisc.o: In function `SX1276FskGetBw':
sx1276-FskMisc.c:(.text+0x708): undefined reference to `pow'
collect2: error: ld returned 1 exit status

댓글 달기

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