MakeFile.Python & C++ 混编教程 上

本文是关于在Linux环境下使用Makefile进行Python和C++混编的教程。首先介绍了Linux的主流编译器GCC和Clang的特点,然后详细阐述了一个C++程序的编译步骤。通过一个简单的示例,展示了如何使用Makefile管理多文件编译,并最终生成可执行文件。接下来,文章讨论了如何创建动态链接库(.so文件),以便Python调用C++代码,并给出了相应的Makefile命令。最后,通过一个Python脚本展示了成功调用C++动态库的例子。
摘要由CSDN通过智能技术生成

MakeFile.Python & C++ 混编教程 上

对于习惯IDE的Programmer来说 底层实际上是非常陌生的领域 然而下探到C++编译机制,对于一个合格的工程师又是非常有必要掌握的技术因此 本篇文章将讲解利用MakeFile 来实现Python C++混编的目的

首先不同平台的编译,存在着显著的差别:

Linux/UnixLike平台的动态链接库一般为.so为结尾(shared object)

Windows平台的动态链接库一般为.dll为结尾(Dynamic Link Library )

Linux Part:

编译器

在Linux中 主流编译器为Clang以及GNU(GCC,G++)
GCC中支持的语言常用的有
C、C++、Java、Object-C
结构类似于一个标准Unix编译器

而Clang是支持C++,CObject-C,Object-C++语言的编译器前端
其底层采用了LLVM底层虚拟机,在编译Object-C时对比GCC快三倍

总体上:

  • GCC特性:

除支持C/C++/ Objective-C/Objective-C++语言外,还是支持Java/Ada/Fortran/Go等;当前的Clang的C++支持落后于GCC;支持更多平台;更流行,广泛使用,支持完备。

  • Clang特性:

编译速度快;内存占用小;兼容GCC;设计清晰简单、容易理解,易于扩展增强;基于库的模块化设计,易于IDE集成;出错提示更友好


我们先以GCC为例讲解以下一个典型的C++编译指令是如何工作的

一个典型的Unix like平台的 C++程序编译要经过哪些步骤?

(更详细的解释参照C++编译过程,不再赘述)

而一个 gcc --h显示的帮助信息最常用的部分如下:

-B <directory>           Add <directory> to the compiler's search paths
#添加编译器的搜索路径(例如头文件等)
-v                       Display the programs invoked by the compiler
#显示被编译器调用的程序
-###                     Like -v but options quoted and commands not executed
-E                       Preprocess only; do not compile, assemble or link
#只预处理不编译汇编或者链接
-S                       Compile only; do not assemble or link
#只编译不汇编和链接
-c                       Compile and assemble, but do not link
#编译和汇编,不连接
-o <file>                Place the output into <file>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值