win7 编译64bit boost Python

本文详细介绍了如何使用vs2012在x64环境下通过vs2012x64NativeToolsCommandPrompt构建Boost库,并生成DLL版本平台库的方法。包括启动命令、路径切换、编译选项设置及生成动态库或静态库的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



1.从开始菜单启动vs2012下的VS2012 x64 Native Tools Command Prompt


2. 然后转到boost根文件夹,输入 bootstrap.bat 生成x64版的bjam.exe。

3.然后运行命令:
bjam --build-type=complete toolset=msvc-9.0 threading=multi link=shared architecture=x86   address-model=64
即可生成DLL版平台库,如果要编译静态库版就把shared改为static。


  • 只生成一个库的话加上例如 --with-python 的编译选项,避免生成东西太多、时间太长。
  • 要有address-model=64属性,如果没有这个属性的话,会默认生成32位的平台库,加入这个选项才能生成64位的DLL。
  • 如果要生成Boost.Python库,需要先下载安装x64版的Python安装包,我用的版本是3.2.3。在使用这个库编写Python扩展DLL时,默认是使用动态库版的Boost.Python,要使用静态版的必须在C++项目中定义BOOST_PYTHON_STATIC_LIB宏,这样就不用在使用或发布扩展时带着boost_python-vc90-mt-1_50.dll一起了,当然扩展DLL的尺寸会大些,如果做实验没必要这样,编译又慢生成的文件也大。
  • vs工具链版本:vs2003 : msvc-7.1,vs2005 : msvc-8.0,vs2008 : msvc-9.0,vs2010 : msvc-10.0

<think>我们正在讨论如何在Ubuntu系统上编译适用于ARM64架构的Boost。 根据用户的问题,我们需要指导用户在Ubuntu上为ARM64架构编译Boost。 注意:用户的环境是Ubuntu(可能是x86_64或ARM64主机),但目标架构是ARM64。如果用户是在x86_64主机上交叉编译,步骤会有所不同;如果是直接在ARM64主机上编译,则步骤相对简单。 由于用户没有明确说明是交叉编译还是本地编译,我们将分别考虑两种情况,但根据引用[3]中的命令,它看起来像是在ARM64主机上本地编译(因为使用了gcc-arm64工具集,但注意这个工具集名称可能不是标准的,通常交叉编译需要指定交叉编译工具链)。 然而,引用[3]中给出的命令是: ./bjam install toolset=gcc-arm64 variant=release link=shared threading=multi runtime-link=shared --prefix=/opt/torch_dependency/arm64 --with-thread --with-system --with-filesystem -j$CPU_NUM 这个命令中使用了`toolset=gcc-arm64`,这通常意味着使用一个名为`gcc-arm64`的编译工具,但标准的GCC交叉编译工具链通常命名为`aarch64-linux-gnu-gcc`。因此,我们可能需要调整。 考虑到引用[2]中提到ARM64+Ubuntu环境已经相当友好,我们可以假设用户可能是在ARM64主机上直接编译(本地编译),这样就不需要交叉编译工具链。 因此,我们分两种情况: 1. 在ARM64主机上本地编译Boost。 2. 在x86_64主机上交叉编译Boost(针对ARM64)。 由于用户问题中没有明确主机架构,我们将提供两种方案的指导。但根据引用[3]的命令,它可能是针对本地编译(因为路径中指定了arm64,且没有明显的交叉编译标志),所以我们将重点放在本地编译,同时简要介绍交叉编译。 步骤: 情况一:在ARM64主机上本地编译Boost 1. 安装必要的编译工具和 2. 下载Boost源代码 3. 配置和编译 4. 安装 情况二:在x86_64主机上交叉编译Boost(针对ARM64) 1. 安装交叉编译工具链 2. 下载Boost源代码 3. 配置为交叉编译 4. 编译和安装 由于引用[3]中给出的命令是本地编译的命令,我们主要参考它,但会做一些调整以符合标准做法。 另外,引用[4]提到了安装libudev-dev,这可能是在编译过程中需要的依赖,但Boost本身通常不依赖它,除非使用了特定的(如system)。为了确保,我们可以安装一些常用依赖。 我们开始编写回答。 注意:在回答中,我们使用中文,并按照要求使用LaTeX格式。</think>### 在Ubuntu上为ARM64架构编译Boost的步骤 以下是针对ARM64架构编译Boost的详细流程(分本地编译和交叉编译两种方案): #### **方案一:本地编译(ARM64主机)** 1. **安装编译依赖** ```bash sudo apt update sudo apt install build-essential g++ python3-dev autotools-dev libicu-dev libbz2-dev ``` 2. **下载并解压Boost源码** ```bash wget https://boostorg.jfrog.io/artifactory/main/release/1.84.0/source/boost_1_84_0.tar.gz tar xzf boost_1_84_0.tar.gz cd boost_1_84_0 ``` 3. **配置编译环境** 生成构建工具: ```bash ./bootstrap.sh ``` 4. **指定ARM64编译参数** 使用`gcc`工具链并设置目标架构: ```bash ./b2 install \ toolset=gcc \ architecture=arm64 \ # 显式指定ARM64架构 variant=release \ link=shared \ threading=multi \ runtime-link=shared \ --prefix=/opt/boost_arm64 \ # 自定义安装路径 --with-thread --with-system --with-filesystem \ -j$(nproc) # 并行编译加速 ``` > **关键参数说明**: > - `architecture=arm64`:强制目标为ARM64架构 > - `--prefix`:指定ARM64专用安装目录 > - `-j$(nproc)`:使用全部CPU核心加速编译[^3] --- #### **方案二:交叉编译x86主机→ARM64目标)** 1. **安装交叉编译工具链** ```bash sudo apt install g++-aarch64-linux-gnu binutils-aarch64-linux-gnu ``` 2. **配置交叉编译参数** 编辑`project-config.jam`文件: ```python using gcc : arm64 : aarch64-linux-gnu-g++ ; # 声明交叉编译器 ``` 3. **执行交叉编译** ```bash ./b2 install \ toolset=gcc-arm64 \ target-os=linux \ abi=aapcs \ # ARM应用二进制接口 --prefix=/opt/boost_arm64 \ --with-thread --with-system \ -j$(nproc) ``` --- #### **验证安装** 检查生成的文件架构: ```bash file /opt/boost_arm64/lib/libboost_system.so ``` 输出应包含: ``` ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV)... ``` #### **常见问题解决** - **依赖缺失错误**:根据报错安装对应,如: ```bash sudo apt install libudev-dev # 解决设备相关依赖[^4] ``` - **工具链路径问题**:确保交叉编译器在`PATH`中: ```bash export PATH=/usr/bin/aarch64-linux-gnu:$PATH ``` > **ARM64生态说明**:当前Ubuntu对ARM64支持完善,APT源提供大量预编译包,显著简化了开发环境配置[^2]。 --- ### 相关问题 1. 如何为不同架构(如ARM64/x86)构建多版本Boost? 2. 交叉编译Boost时如何解决"library not found for -lxxx"错误? 3. Boost的`variant=release/debug`参数对性能有何影响? 4. 在ARM64服务器上部署Boost应用需要哪些运行时依赖? [^1]: 引用自环境配置中的路径检测问题 [^2]: 引用自ARM64+Ubuntu生态兼容性分析 [^3]: 引用自Boost编译参数优化示例 [^4]: 引用自依赖安装解决方案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值