【问题标题】:Python3.3 header preferred over Python2.7 header by gccgcc 首选 Python3.3 标头优于 Python2.7 标头
【发布时间】:2013-12-17 20:28:56
【问题描述】:

我正在尝试编译使用 Python.h 标头的代码。其实就是lcm库。

现在,我的系统上安装了 Python2.7 和 Python3.3。相应的头文件管理器位于/usr/include/python2.7//usr/include/python3.3m/

问题是代码需要2.7版本,但是gcc总是更喜欢3.3版本。

我尝试设置./configure --prefix /bla/bla CPPFLAGS=-I/usr/include/python2.7/export C_INCLUDE_PATH=/usr/include/python2.7,均无效。

中间的解决方法是将代码更改为#include <python2.7/Python.h>,但这使得它无法移植,因此它不能作为 lcm 人的修复...

一定有办法!!!

【问题讨论】:

  • 你试过--with-python=...了吗?
  • @IgnacioVazquez-Abrams:感谢您的评论,现在就尝试过,不...不起作用

标签: python python-2.7 gcc python-3.x include-path


【解决方案1】:

GCC 可能更喜欢 3.3 版本,如果它安装为在没有版本的情况下调用“python”时运行的默认值?您总是可以将该二进制文件指向 2.7 以使其成为您系统上的默认值..

查看 m4 源代码,您似乎可以在一行中执行以下操作:

PYTHON=/path/to/python2.7 PYTHON_INCLUDES="-I/usr/include/python2.7" ./configure --prefix /bla/bla

【讨论】:

  • “用任何东西构建它”是失败的步骤,因为有 c 代码,不能用错误版本的 Python.h 头文件编译。
  • 更新了我的答案,希望得到一个更有启发性的答案
  • 奇怪的是,PYTHON=/path/to/python2.7 成功了。我可以省略PYTHON_INCLUDES=...。奇怪,因为我的默认 python 已经指向 python2.7 并且 configure 找到了它。但它只适用于 PYTHON 变量。
  • 可能是m4怪异,我在m4/python.m4 fwiw中找到了变量
猜你喜欢
  • 2016-09-08
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多