C++程序编译执行具体步骤及各大系统中的编译命令

C++程序的编译执行步骤:

1.首先是编写程序的源代码,保存在一个文件中,该文件的后缀名应为cpp,cxx,.C等(该C是大写,小写c代表是c程序,根据C++的版本不同而有一些差异,但基本都识别cpp)。该文件就是程序的源代码文件。
2.编译源代码,生成目标代码文件。编译源代码用到编译器,如g++和clang。生成的目标代码文件的后缀名是  .o  。目标代码文件里的内容是机器语言。
3.链接程序。即将目标代码与其他代码链接起来。如C++常用到的库。最后生成可执行代码或者叫可执行文件。

Linux和Windows中的编译和链接:

Linux:

Linux中最常用的编译器是g++,下面的命令是编译源代码文件main.cpp,生成可执行文件a.out。
g++ main.cpp
执行a.out可用以下命令:
./a.out
若要指定生成的可执行文件的文件名,使用下面的命令:
g++ main.cpp -o test
执行该命令后生成可执行文件test,以下命令执行该可执行文件:
./test
同时编译多个源文件:
g++ test1.cpp test2.cpp
其中需要注意的是,该命令不会保留目标代码文件main.o。因此若需要目标代码文件,可以执行以下命令:
g++ -c main.cpp
目标代码文件都是机器语言,虽然看不懂,但保留目标代码文件有个好处就是当同时编译了多个cpp文件时,此时若修改了其中的一个cpp文件,不需要重新编译全部源文件,只需编译被修改的源文件,然后将它与其他源文件的目标代码文件链接即可。
如有三个文件:main.cpp   head.cpp   head,h

main.cpp:
#include<iostream>
#include<cstdio>
#include"head.h"
using namespace std;

int main()
{
	print();
	printf("%d\n",sum(2,3));

	return 0;
}

head.cpp:
#include<iostream>
#include"head.h"
#include<cstdio>
using namespace std;

void print()
{
	printf("hello world!\n");
}

int sum(int x,int y)
{
	return x+y;
}

head.h:
void print();
int sum(int x,int y);

当修改了head.cpp文件时,只需执行以下命令即可:
g++ head.cpp main.o
前提是存在main.o。

Windows:
在windows中,很多人都爱用Visual Studio这些功能完全的IDE。基本上就是一键编译运行的操作。当然上述命令在windows的命令行中也能用,其中生成的可执行文件的后缀是.exe。也可以下载免费的命令行编译器,例如Cygwin和MinGW。


参考:C++ Primer Plus


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们需要在Python调用C++程序时,我们通常会选择将C++程序编译成动态库(.dll或.so文件),然后在Python引用它。下面是一些步骤: 1.编写C++程序并将其编译为动态库,例如Windows平台上的.dll文件或Linux平台上的.so文件。 2.使用Python的ctypes模块来加载动态库,并调用其定义的函数。这个过程需要知道动态库函数的名称和参数类型。 3.在Python调用动态库函数,获取返回值并进行处理。 以下是一个简单的示例代码: 假设我们有一个C++程序,包含一个名为add_numbers的函数,它接受两个整数并返回它们的和。 ```c++ // add_numbers.cpp #include "add_numbers.h" int add_numbers(int x, int y) { return x + y; } ``` 我们可以将其编译为Windows平台上的.dll文件,使用以下命令: ``` g++ -shared -o add_numbers.dll add_numbers.cpp ``` 在Python,我们可以使用以下代码来加载动态库,并调用其函数: ```python import ctypes # 加载动态库 add_numbers_lib = ctypes.WinDLL('add_numbers.dll') # 获取函数 add_numbers = add_numbers_lib.add_numbers # 设置参数类型 add_numbers.argtypes = [ctypes.c_int, ctypes.c_int] # 设置返回值类型 add_numbers.restype = ctypes.c_int # 调用函数 result = add_numbers(1, 2) print(result) # 输出3 ``` 相关问题: 1. C++程序编译成动态库有哪些优点? 2. Python如何加载动态库? 3. 如何在Python调用动态库函数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值