GCC 同时编译多个 C/C++ 文件
生活随笔
收集整理的這篇文章主要介紹了
GCC 同时编译多个 C/C++ 文件
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
以下這些操作都可以共用一條 gcc 指令:
- 將多個(gè)
C/C++源文件加工為匯編文件或者目標(biāo)文件; - 將多個(gè)
C/C++源文件或者預(yù)處理文件加工為匯編文件或者目標(biāo)文件; - 將多個(gè)
C/C++源文件、預(yù)處理文件或者匯編文件加工為目標(biāo)文件; - 同一項(xiàng)目中,不同的源文件、預(yù)處理文件、匯編文件以及目標(biāo)文件,可以使用一條
gcc指令,最終生成一個(gè)可執(zhí)行文件;
目錄結(jié)構(gòu)如下:
wohu@ubuntu:~/cpp/src$ tree ./
./
├── function.cpp
├── function.h
└── main.cpp0 directories, 3 files
wohu@ubuntu:~/cpp/src$
function.cpp 內(nèi)容
#include <iostream>void greetings()
{std::cout << "hello,world" << std::endl;
}
function.h 內(nèi)容
void greetings();
main.cpp 內(nèi)容
#include <iostream>
#include "function.h"int main()
{greetings();return 0;
}
1. 分步編譯
先執(zhí)行
g++ -c function.cpp main.cpp
再執(zhí)行
g++ function.o main.o -o main
完整步驟如下:
wohu@ubuntu:~/cpp/src$ ls
function.cpp function.h main.cpp
wohu@ubuntu:~/cpp/src$ g++ -c function.cpp main.cpp
wohu@ubuntu:~/cpp/src$ ls
function.cpp function.h function.o main.cpp main.o
wohu@ubuntu:~/cpp/src$ g++ function.o main.o -o main
wohu@ubuntu:~/cpp/src$ ls
function.cpp function.h function.o main main.cpp main.o
wohu@ubuntu:~/cpp/src$ ./main
hello,world
wohu@ubuntu:~/cpp/src$
2. 一起編譯
直接執(zhí)行
g++ main.cpp function.cpp -o main
執(zhí)行過(guò)程:
wohu@ubuntu:~/cpp/src$ ls
function.cpp function.h main.cpp
wohu@ubuntu:~/cpp/src$
wohu@ubuntu:~/cpp/src$ g++ main.cpp function.cpp -o main
wohu@ubuntu:~/cpp/src$ ls
function.cpp function.h main main.cpp
wohu@ubuntu:~/cpp/src$ ./main
hello,world
wohu@ubuntu:~/cpp/src$
如果一個(gè)項(xiàng)目中有十幾個(gè)甚至幾十個(gè)源文件,我們可以進(jìn)入該項(xiàng)目目錄,用 *.c 表示所有的源文件,即執(zhí)行如下指令:
wohu@ubuntu:~/cpp/src$ ls
function.cpp function.h main.cpp
wohu@ubuntu:~/cpp/src$ g++ *.cpp -o main
wohu@ubuntu:~/cpp/src$ ls
function.cpp function.h main main.cpp
wohu@ubuntu:~/cpp/src$ ./main
hello,world
wohu@ubuntu:~/cpp/src$
注意,由于在程序預(yù)處理階段,GCC 編譯器會(huì)自行處理各個(gè) .c/.c++ 文件內(nèi)部引入的 .h 頭文件(將 .h 文件中的代碼直接拷貝到當(dāng)前 .c 源文件中),因此編譯運(yùn)行項(xiàng)目時(shí),我們只需要提供所有的源文件即可,不需要處理頭文件。
總結(jié)
以上是生活随笔為你收集整理的GCC 同时编译多个 C/C++ 文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: GCC 连接器、链接标准库 gcc -l
- 下一篇: 2022-2028年中国复合软管行业市场