簡體   English   中英

在 g++ 中編譯 C 文件和 C++ 文件

[英]Compiling C files along with C++ file in g++

我有一個我創建的自定義 C header 文件。 我的目錄中有幾個文件如下。

lib1/
     -lib1.h
     -lib1.c
lib2/
     -lib2.h
     -lib2.c
-lib_main.c
-lib_main.h
-main.c
-main.cpp
-Makefile

現在,為了使用名為 main.c 的測試文件測試 header 文件,我將在終端中給出以下命令,

gcc lib_main.c lib1/lib1.c lib2/lib2.c main.c -o ./main

現在,我如何使用 main.cpp 而不是 main.c 測試相同的 header 文件,我該如何更改它?

您應該(並且很可能必須)將 c 和 c++ 源代碼分別編譯到 object 文件中,然后鏈接在一起。

舉個例子

gcc -c -o lib1.o lib1/lib1.c
gcc -c -o lib2.o lib2/lib1.c
gcc -c -o lib_main.o lib_main.c
g++ -c -o main.o main.cpp
g++ -o main lib1.o lib2.o lib_main.o main.o

前四個命令創建一系列 object 文件,擴展名為.o。 最后一個命令將 object 文件鏈接到一個可執行文件中。 顯然,您需要為每個源添加相關的編譯器選項。

需要注意的兩個重要點:

  • 鏈接中的文件順序很重要。 請參閱此處此處的討論。

  • To mix c and c++ code with each other, for example if a c++ code calls a c function, you need to follow specific guidelines .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM