[완료] 제가 뭘 잘못한건가요?? (헤더파일 분리)
글쓴이: plustag / 작성시간: 월, 2008/06/30 - 3:36오후
sum.h
---------------------
int sum(int a, int b);
---------------------
sum.c
---------------------
int sum(int a, int b)
{
return a + b;
}
---------------------
main.c
---------------------
#include "sum.h"
#include
int main()
{
int value;
value = sum(130, 199);
printf("%d\n");
}
---------------------
그리고 gcc main.c하면
main.c:(.text+0x21): undefined reference to `sum' 가 뜹니다.
제가 뭘 잘못한건가요??
Forums:
넵.
gcc -o main.c
gcc -o sum.c
gcc main.o sum.o
이렇게 해주시면 될겁니다. 자세한 설명이나 오류수정은 다른분께 패스.
--
from bzImage
It's blue paper
from bzImage
It's blue paper
gcc -c main.c gcc -c
gcc -c main.c
gcc -c sum.c
gcc main.o sum.o
로 해주셔야 할 거 같습니다.
처음 질문해주신 분께: 처음 두 줄은 코드를 컴파일해서 오브젝트 파일들을 만드는 과정이고요. 마지막 줄은 오브젝트 파일을 링크해서 실행파일을 만드는 과정입니다. 실행파일을 만드는 과정에서는 함수의 모든 정의를 찾는 것이 필요합니다.
그런데 gcc main.c 를 하면, 컴파일해서 오브젝트 파일을 만들고, 그 파일을 링크해서 실행파일을 만드는 걸 한큐에 합니다. 하지만 sum() 의 정의를 main.c 안에서는 찾을 수 없기 때문에 에러가 나는거죠. undefined reference to 'sum' 이 바로 그런 뜻입니다.
----
Let's shut up and code.
----
Let's shut up and code.
경험상으로는 gcc
경험상으로는
gcc *
해줘도 되긴 됩니다 -_-;;;
다만 복잡해질 경우를 대비해서 이런 습관은 자제를....
답변감사합니다..
파일이 몇개가 되다보니 수정하고 컴파일하기가 여간..
makefile만들어버렸습니다..
누구냐 넌?
Makefile 이 답입니다.
Makefile 이 답입니다. 잘하셨습니다 :-)
----
Let's shut up and code.
----
Let's shut up and code.
댓글 달기