gccコンパイルオプション-oと-cの紹介
2698 ワード
オプション-o
1点目
オプション-oは、生成する結果ファイルを指定します.後に結果ファイルの名前が付いています.
oはアウトプットの意味で、目標の意味ではありません.
結果ファイルは、前処理ファイル、アセンブリファイル、ターゲットファイル、または最終実行可能ファイルである可能性があります.
2例
3例
4例
二オプション-c
1点目
オプション-cはgccにソースファイルをコンパイルするとアセンブリされますが、リンクされません.このとき、ターゲットファイルが生成する、出力ファイルが指定されていなければ同名のファイルが生成される.oファイル.
2例
3例
4-c後およびマルチソースファイルの場合
-cの後に複数のソースファイルが続くと、ソースファイルごとに1つが生成される.oファイルですが、この場合-oは使用できません.
5実戦
test1.cppコンテンツ
test2.cppコンテンツ
-cコンパイルとアセンブリを行う
1点目
オプション-oは、生成する結果ファイルを指定します.後に結果ファイルの名前が付いています.
oはアウトプットの意味で、目標の意味ではありません.
結果ファイルは、前処理ファイル、アセンブリファイル、ターゲットファイル、または最終実行可能ファイルである可能性があります.
2例
gcc -S test.i -o test.s
# -S
# test.s
3例
gcc -c test.cpp -o test
# gest , , -c, gcc , 。
gcc -c test.cpp -o test.o
# test.o test ,
4例
gcc test.c -o test
# test
二オプション-c
1点目
オプション-cはgccにソースファイルをコンパイルするとアセンブリされますが、リンクされません.このとき、ターゲットファイルが生成する、出力ファイルが指定されていなければ同名のファイルが生成される.oファイル.
2例
[root@localhost temp]# gcc -c test.cpp
[root@localhost temp]# ll
total 8
-rw-r--r--. 1 root root 188 Mar 10 11:00 test.cpp
-rw-r--r--. 1 root root 1504 Mar 10 11:00 test.o
# test.o
3例
[root@localhost temp]# gcc -c test.cpp -o test
# test , , , test.o
[root@localhost temp]# ls
test test.cpp test.o
[root@localhost temp]# ./test
-bash: ./test: Permission denied
[root@localhost temp]# chmod +x test
[root@localhost temp]# ./test
-bash: ./test: cannot execute binary file
[root@localhost temp]# md5sum test.o
3edeaa07cd496b92e1fd5c287de2131b test.o
[root@localhost temp]# md5sum test
3edeaa07cd496b92e1fd5c287de2131b test
4-c後およびマルチソースファイルの場合
-cの後に複数のソースファイルが続くと、ソースファイルごとに1つが生成される.oファイルですが、この場合-oは使用できません.
5実戦
test1.cppコンテンツ
[root@localhost temp]# cat test1.cpp
#include
int t1()
{
bool b=false; // test.c , C bool
printf("hello, boy
" );
return 0;
}
test2.cppコンテンツ
[root@localhost temp]# cat test2.cpp
#include
int t2()
{
bool b=false; // test.c , C bool
printf("hello, boy
" );
return 0;
}
-cコンパイルとアセンブリを行う
[root@localhost temp]# ll
total 12
-rw-r--r--. 1 root root 186 Mar 10 11:05 test1.cpp
-rw-r--r--. 1 root root 186 Mar 10 11:06 test2.cpp
-rw-r--r--. 1 root root 188 Mar 10 11:00 test.cpp
[root@localhost temp]# gcc -c test.cpp test1.cpp test2.cpp
[root@localhost temp]# ls
test1.cpp test1.o test2.cpp test2.o test.cpp test.o
# , 3 .o
# -c -o,
[root@localhost temp]# gcc -c test.cpp test1.cpp test2.cpp -o test.o
gcc: fatal error: cannot specify -o with -c, -S or -E with multiple files
compilation terminated.
# ( -c), ,-o 。
[root@localhost temp]# gcc test.cpp test1.cpp test2.cpp -o test
[root@localhost temp]# ls
test test1.cpp test1.o test2.cpp test2.o test.cpp test.o
[root@localhost temp]# ./test
hello, boy