在 g++ 中编译 C 文件和 C++ 文件
Compiling C files along with C++ file in g++
我有一个我创建的自定义 C 头文件。我的目录下有几个文件如下
lib1/
-lib1.h
-lib1.c
lib2/
-lib2.h
-lib2.c
-lib_main.c
-lib_main.h
-main.c
-main.cpp
-Makefile
现在,为了使用名为 main.c 的测试文件测试头文件,我将在终端中给出以下命令,
gcc lib_main.c lib1/lib1.c lib2/lib2.c main.c -o ./main
现在,我如何使用 main.cpp 而不是 main.c 测试相同的头文件,我该如何更改它?
您应该(很可能 必须 )将 c 和 c++ 源代码分别编译成目标文件,然后 link 一起编译。
举个例子
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
前四个命令创建了一系列目标文件,扩展名为.o。最后一个命令link把目标文件一起变成了可执行文件。
显然你需要为每个源添加相关的编译器选项。
注意两点:
文件在 linking 中的顺序很重要。请参阅讨论 here and here。
要混合使用 c 和 c++ 代码,例如如果 c++ 代码调用 c 函数,则需要遵循特定的 guidelines.
我有一个我创建的自定义 C 头文件。我的目录下有几个文件如下
lib1/
-lib1.h
-lib1.c
lib2/
-lib2.h
-lib2.c
-lib_main.c
-lib_main.h
-main.c
-main.cpp
-Makefile
现在,为了使用名为 main.c 的测试文件测试头文件,我将在终端中给出以下命令,
gcc lib_main.c lib1/lib1.c lib2/lib2.c main.c -o ./main
现在,我如何使用 main.cpp 而不是 main.c 测试相同的头文件,我该如何更改它?
您应该(很可能 必须 )将 c 和 c++ 源代码分别编译成目标文件,然后 link 一起编译。
举个例子
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
前四个命令创建了一系列目标文件,扩展名为.o。最后一个命令link把目标文件一起变成了可执行文件。 显然你需要为每个源添加相关的编译器选项。
注意两点:
文件在 linking 中的顺序很重要。请参阅讨论 here and here。
要混合使用 c 和 c++ 代码,例如如果 c++ 代码调用 c 函数,则需要遵循特定的 guidelines.