Boost.python 编译和使用
在CentOS上配置Boost.Python环境,首先需要安装Python及python-devel,然后手动编译Boost库中的Python组件。编写扩展模块时,BOOST_PYTHON_MODULE宏内的模块名必须与生成的.so文件名完全一致,且只能出现一次,这是关键。编译时务必链接-lboost_python和-lpython2.6两个库,生成.so文
在 Cent OS 上配置 Boost.Python 环境,并编写一个 C++ 扩展模块供 Python 调用,这事儿看起来简单,但实际操作中容易踩坑。下面把完整流程拆开来走一遍,从安装依赖到最后生成 so 文件,每一步都过一下关键点。

依赖安装
安装 Python
直接用 yum 搞定:
yum install python26安装 Python devel
这一步如果漏掉,后面编译时会出现一堆莫名其妙找不到头文件的错误。先搜索一下具体包名:
yum search python | grep -i devel然后安装:
yum install python-devel.x86_64库和 include 路径
编译时链接 -lboost -lboost_python -lpython2.6,头文件路径指向 -I/usr/include/python2.6/。注意 Python 版本要和安装的一致。
Boost 与 Boost.Python 编译
默认安装的 Boost 并不包含 Python 组件,需要自己编译。先进入 Boost 源码目录,生成 bjam 工具:
sh ./bootstrap.sh然后编译 Boost.Python:
sudo ./bjam -toolset=gcc --with-python --with-python --layout=tagged --build-type=complete stage编译完成后,stage 目录下会生成对应的 lib 文件。这里注意命令中的 --with-python 出现了两次(是为保险还是笔误?实际一次即可,但原文如此,保留)。另外编译时可能还要加上 -lboost -I/usr/local/boost 等参数,具体视安装路径调整。
编写扩展模块
接下来是核心环节:把 C/C++ 代码编译成 .so 文件,并在其中注册导出函数。
在 .so 里添加代码,使用 boost::python 命名空间。关键点是:宏 BOOST_PYTHON_MODULE 中的模块名必须与生成的 .so 文件名保持一致(不带 .so 后缀),而且一个 .so 文件中只能出现一次该宏,否则编译会报重定义错误。
一个典型的写法如下:
BOOST_PYTHON_MODULE(libcheck)
{
python::def("CheckInit", CheckInit);
python::def("CheckCaseClassIdContinous", CheckCaseClassIdContinous);
python::def("GetOKMessages", GetOKOKMessages);
python::def("GetERMessages", GetERERMessages);
}这里 def 的第一个参数是暴露给 Python 调用的函数名,第二个参数是 C++ 中的实际函数指针。编译时将 .cpp 与 -lboost_python -lpython2.6 链接,生成 .so 文件,即可在 Python 中 import 使用。
整个过程不复杂,但版本和路径容易出幺蛾子,尤其是在 Cent OS 这种相对保守的发行版上。只要注意了 devel 包的安装和 Boost.Python 的独立编译,后面基本一路顺畅。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















