make utility에 대한 질문입니다...

selic의 이미지

장황하게 써야 겠네요..흠..

[main.c]
extern void bar(void);
extern void car(void);

int main(void)
{
bar();
car();
return(0);
}

[bar.c]

#include <stdio.h>
void bar(void)
{
printf("good bye, my love.\n);
}

[car.c]
#include <stdio.h>
void car(void)
{
printf("hello.\n);
}

이렇게 세개의 .c를 만든후..

Makefile를 만들어서

foo: main.o bar.o car.o
gcc -o foo main.o bar.o car.o

main.o: main.c
gcc -c main.c

bar.o: bar.c
gcc -c bar.c

car.o: car.c
gcc -c car.c

이렇게 해서 저장한후...

해당 폴더에서 #make 를 입력하면..-_- 링크가 되어야 하구...
foo가 생겨서 실행해야 하는데..으윽..

#make 하면

makefile2: ***missing separator. 멈춤

이라고 나오는데...제 생각엔 makefile의 2번째줄이 잘못되었어..
인데.. 해답을 모르겠습니다.

ulra의 이미지

foo: main.o bar.o car.o
(TAB)gcc -o foo main.o bar.o car.o

main.o: main.c
(TAB)gcc -c main.c

bar.o: bar.c
(TAB)gcc -c bar.c

car.o: car.c
(TAB)gcc -c car.c

명령줄에 TAB을 띄우지 않으면 안되는걸로 알고 있습니다.

OTL 즐!!!! (좌절 금지!!!)

selic의 이미지

두개의 질문을 했는데...정말 빠르고..정확한..

답변 감사드립니다...

꾸벅...

freezm7의 이미지

ulra wrote:
foo: main.o bar.o car.o
(TAB)gcc -o foo main.o bar.o car.o

main.o: main.c
(TAB)gcc -c main.c

bar.o: bar.c
(TAB)gcc -c bar.c

car.o: car.c
(TAB)gcc -c car.c

명령줄에 TAB을 띄우지 않으면 안되는걸로 알고 있습니다.

아시겠지만,

main.o: main.c 
(TAB)gcc -c main.c 

bar.o: bar.c 
(TAB)gcc -c bar.c 

car.o: car.c 
(TAB)gcc -c car.c 

.c.o :
(TAB)gcc -c $<

또는

%.o : %.c
(TAB)gcc -c $<

로 간단히 할 수 있습니다.

사실... 위 두 문장은 필요하지도 않습니다. Make 내장 룰에 이미 포함되어 있으니까요.

따라서 원래 Makefile 은 그냥 다음 두줄로 끝낼 수 있습니다.

foo: main.o bar.o car.o 
(TAB)gcc -o $@ $^

make 의 내장 룰을 보고 싶으시면

make -p -f - < /dev/null 2> /dev/null

로 확인하시면 되겠습니다.

즐겁게 살아 볼까나~*

ulra의 이미지

freezm7님의 글 중

make -p -f - < /dev/null 2> /dev/null

부분을 해봤는데요.

make: *** No rule to make target `2'. Stop.

이런 메세지가 나오네요.

저두 make는 초보라서 어떻게 해야할지 잘 모르겠습니다.

답변 부탁드립니다.

OTL 즐!!!! (좌절 금지!!!)

feanor의 이미지

ulra님, 사악한 C 쉘을 버리고 본 쉘을 쓰세요. :-)

make와는 별 상관이 없구요, ulra님 쓰시는 쉘이 2>를 인식 못 하는 것 같네요.

--feanor

ulra의 이미지

근데 어떻게 아셨나요? 제가 csh 을 쓰는 것을.... ^^;;

감사드리고요.

csh 이 사악하다고 하셨는데, 시간이 나시면 이유 좀 알려주시면

안될까요? ^^;;;

좋은 하루 되세요.

OTL 즐!!!! (좌절 금지!!!)

댓글 달기

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