如何从命令行编译和链接多个文件?

时间:2015-02-24 21:23:29

标签: c++ cygwin

我曾经使用visual studio作为C ++的编译器。我最近在cygwin中使用g ++。我的问题是我不知道如何使用cygwin进行继承。下面的代码仅用于说明,以使我的问题更清晰。

基类:

// A.h:
class A{
void func1();
};
class B:A{
func2();
};

//-------------
//A.cpp:
#include"A.h";
A::func1(){
};
//-----------

//B.cpp:
#include"A.h";
B::func2(){
func1();
};

int main(){
B b.
b.func2();
return 0;}
//----------------

我在Visual Studio中运行(类似)这没有任何问题。但我不知道如何在cygwin中运行它。如何包含A.h,A.cpp,在B.cpp中运行main()。

2 个答案:

答案 0 :(得分:1)

您需要先将类实现文件编译为目标文件,然后将它们链接起来。

如果你要使用g++ compiler,你可以运行这些命令......

  1. g++ -c A.cpp
  2. g++ -c B.cpp
  3. g++ A.o B.o main.cpp -o my_program
  4. 这可以使用Makefile自动执行,因此您无需输入所有内容。正如其他人所提到的,GDB也可用于调试,但您需要在编译器标志中添加'-g'选项以创建调试符号。

    此外,您在主要功能的第1行末尾有句号,而不是分号。

答案 1 :(得分:0)

了解makefile ...或在命令行中输入

g++ -Wall -c -g -o A.o A.cpp
g++ -Wall -c -g -o B.o B.cpp
g++ -o myProgram.exe A.o B.o

您需要将两个cpp文件编译为目标文件,然后将它们链接在一起。 我希望你使用g ++,它在PATH中。

注意:

  • 我用-g生成“调试”文件
  • 我用-Wall来显示所有警告(黄金法则:修复警告)