ubuntu如何用gcc编译Python扩展模块
在Ubuntu中,先安装python3-dev和gcc,编写C扩展源文件及setup.py脚本,执行python3setup.pybuild编译生成.so共享库,可选安装到系统环境,最后导入模块验证。若依赖外部库,需在Extension中通过libraries及library_dirs指定链接参数。注意使用distutils或setuptools,确保Pyt
在Ubuntu上,用gcc编译Python扩展模块这件事,其实没有想象中那么复杂。只要按部就班走完几个关键步骤,就能让C代码和Python无缝对接起来。下面就把整个过程拆开来讲。

第一步,先把基础工具补齐。你需要Python的开发头文件和gcc编译器,这两样缺一不可。打开终端,直接跑两行命令:
sudo apt update
sudo apt install python3-dev gcc
如果你还在用Python 2(坦白说,已经停止维护,不推荐这么做),那就换成python-dev。装好之后,环境就算搭起来了。
第二步,写代码。创建一个.c文件,比如examplemodule.c,把你要实现的C函数放进去。至于具体怎么写一个Python可调用的C扩展,那是另一门功课,这里先按下不表。
第三步,准备一个setup.py脚本。这个文件是告诉setuptools该怎么编译你的模块。内容很简单:
from setuptools import setup, Extension
module = Extension('examplemodule', sources=['examplemodule.c'])
setup(name='ExampleModule',
version='1.0',
description='This is an example Python extension module',
ext_modules=[module])
这里examplemodule就是模块名,sources列表里放所有源文件。如果有多个.c文件,一并列进去就行。
第四步,编译。在终端里进入setup.py所在的目录,执行:
python3 setup.py build
系统会自动调用gcc完成编译,并在build目录下生成一个.so共享库文件——这就是你最终要用的扩展模块。
第五步,安装到系统环境(可选)。如果想让所有Python程序都能直接调用这个模块,可以运行:
sudo python3 setup.py install
它会把这个.so文件复制到Python的site-packages目录里。不过,如果你只是临时测试,直接用build目录下的文件也行,只要把路径加到sys.path里就成。
第六步,验收。打开Python解释器,试试导入模块并调用函数:
import examplemodule
examplemodule.some_function()
如果没报错,恭喜你,扩展模块已经跑起来了。
有一点需要特别提醒:如果你的扩展模块依赖外部库,比如数学库或者某个第三方库,那必须在Extension里指定这些库的链接参数。例如:
module = Extension('examplemodule',
sources=['examplemodule.c'],
libraries=['some_library'],
library_dirs=['/path/to/library'])
同时,确保你有权限访问这些库的头文件和库文件,编译时路径也要写对,否则gcc会毫不留情地甩你一脸错误。
AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。
AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。
AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。
Fuzor Windows版是一套面向建筑、工程与施工团队的BIM/VDC平台,可汇集多来源模型和进度数据,完成实时可视化、4D施工推演、场地物流规划、问题检查、成果演示及团队协同。
Gety Windows版是一款本地AI文件搜索工具,可索引电脑中的文档和图片,通过全文搜索、语义检索与OCR快速定位内容,并提供原版式预览、筛选和AI工具连接功能。
iMazing Windows版是一款面向iPhone、iPad和iPod用户的本地设备管理工具,可在电脑上完成多版本备份、照片与音乐传输、信息导出、应用数据管理以及新旧设备迁移。













