Ubuntu16.04.4 LTS下Python3编译QuickFIX包报错求助
解决Ubuntu 16.04.4 LTS下Python3安装QuickFIX时make报错的问题
你遇到的这个错误,本质是QuickFIX核心库与Python绑定代码版本不匹配导致的——SWIG生成的绑定代码QuickfixPython.cpp里调用了FIX::ScreenLog类不存在的getMillisecondsInTimeStamp()方法。下面给你几个可行的解决步骤:
1. 确保核心库与Python绑定代码版本完全同步
如果你是直接从GitHub克隆的QuickFIX仓库,大概率是编译时核心库代码和Python绑定的生成代码来自不同的版本分支/提交:
- 先检查当前仓库的提交记录,确认所有代码同步:
git log --oneline -n 5 - 如果有不一致,切换到稳定的tag版本(比如
v1.15.1,这个版本兼容性较好):git checkout v1.15.1 - 重新执行编译前的准备步骤(比如
./configure),再尝试make。
2. 重新生成Python绑定代码
QuickFIX的Python绑定是通过SWIG自动生成的,若生成的QuickfixPython.cpp和当前核心库不匹配,就会出现这类错误:
- 进入QuickFIX的Python子目录:
cd quickfix/python - 重新运行SWIG生成绑定代码:
swig -c++ -python quickfix.i - 回到主目录,重新执行
make和sudo make install。
3. 升级SWIG到兼容版本
Ubuntu 16.04默认的SWIG版本可能过低(比如2.0.x),而新版本QuickFIX需要3.0+的SWIG来生成正确的绑定代码:
- 先卸载旧版本SWIG:
sudo apt remove swig - 从源码编译安装适配Ubuntu 16.04的SWIG 3.0.12:
wget http://prdownloads.sourceforge.net/swig/swig-3.0.12.tar.gz tar xzf swig-3.0.12.tar.gz cd swig-3.0.12 ./configure --prefix=/usr/local make sudo make install - 验证安装成功:
输出应显示版本为3.0.12。swig -version
4. 尝试使用pip预编译包(备选方案)
如果上述步骤太繁琐,也可以试试直接用pip安装适配Python3的QuickFIX包:
pip3 install quickfix==1.15.1
指定版本号能更好适配Ubuntu 16.04的系统环境。
内容的提问来源于stack exchange,提问作者shapiro yaacov
相关产品推荐
相关产品推荐

