gcc-cとgcc-oおよびパラメータを付けない違い
一、問題の説明
makefileのチュートリアルを見ていると、私が出会ったように、陳皓(CSDN)先輩のチュートリアルを見ているかもしれません.
https://seisman.github.io/how-to-write-makefile/overview.html
質問を貼り出します.makefileにはこう書かれています.
makefileのチュートリアルを見ていると、私が出会ったように、陳皓(CSDN)先輩のチュートリアルを見ているかもしれません.
https://seisman.github.io/how-to-write-makefile/overview.html
質問を貼り出します.makefileにはこう書かれています.
edit : main.o kbd.o command.o display.o /
insert.o search.o files.o utils.o
cc -o edit main.o kbd.o command.o display.o /
insert.o search.o files.o utils.o
, , makefile(Ⅰ),
edit : main.o
gcc -o edit main.o
makefile , makefile(Ⅱ):
main.o : main.c
gcc -o main.o main.c
, , , makefile(Ⅱ) main.o , edit , shell makefile(Ⅱ) gcc , main.o:
gcc -o main.o main.c
makefile(Ⅰ) :
gcc -o edit main.o
:
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
、
, main , main ? , 。 ?
, , C :
:https://www.cnblogs.com/qytan36/archive/2010/05/25/1743955.html
C 4 。 GCC , , 、 、 、 。
1、
, 、 、 。 “#” 。
gcc -E , :
gcc -E main.c > main.i
main.c main.i 。
2、
, 。 , 。
gcc -S main.i -o main.s
main.i main.s
3、
”.s” 。
gcc -c main.s -o main.o
main.s main.o 。
4、
, 。 、 、 , 。
gcc main.o -o main.exe
main.o main.exe
、
, :
gcc -o edit main.o
main.o gcc -o main.o main.c , main.o .o , 。 .obj ! .out ! !
、gcc -c gcc -o
gcc --help (gcc version 7.3.0):
-c Compile and assemble, but do not link.
-o Place the output into .
'none' means revert to the default behavior of guessing the language based on the file's extension.
:
-c , 。
-o 。
' ' 。
1、 gcc
gcc main.c
a.out, -o , hello.exe
gcc main.c -o main.exe
2、gcc -c main.o
gcc -c main.c # main.o
gcc main.o # ,gcc main.o a.out
-o
gcc main.o -o main.exe
, , makefile makefile.^^