【问题标题】:Compiling error with Buildroot 2017.08Buildroot 2017.08 编译错误
【发布时间】:2017-09-26 23:05:59
【问题描述】:

我有一个自定义的 python 数据包,它在 setup.py 中导入 sqlite3。 使用 Buildroot 2017.02 编译时(命令:make clean all),没问题。 但是在将 Buildroot 更新到 2017.08 后出现编译错误(命令:make clean all)。

Traceback (most recent call last):
  File "setup.py", line 4, in <module>
    import sys, glob, sqlite3
ImportError: No module named sqlite3

以下是我在 //buildroot/output/host/ 中找到“sqlite*”时的列表,它在主机文件夹中有 sqlite3 数据包(2017.08):

./arm-buildroot-linux-gnueabi/sysroot/usr/lib/pkgconfig/sqlite3.pc
./arm-buildroot-linux-gnueabi/sysroot/usr/lib/python2.7/sqlite3
./arm-buildroot-linux-gnueabi/sysroot/usr/share/man/man1/sqlite3.1
./arm-buildroot-linux-gnueabi/sysroot/usr/bin/sqlite3
./arm-buildroot-linux-gnueabi/sysroot/usr/include/sqlite3ext.h
./arm-buildroot-linux-gnueabi/sysroot/usr/include/sqlite3.h
./lib/pkgconfig/sqlite3.pc
./share/man/man1/sqlite3.1
./bin/sqlite3
./include/sqlite3ext.h
./include/sqlite3.h

每一个提示都非常感谢。

【问题讨论】:

  • 你使用了哪个 Python 解释器来得到这个错误?路径?
  • 您可以克隆 Buildroot 存储库 git.busybox.net/buildroot 并比较两个标签/版本以查看发生了什么变化。
  • Python 2.7; /输出/主机/usr/bin/python
  • 我对比了sqlite包,差别不大,而且有上百个commit,不知道哪个部分和这个问题有关。非常感谢。
  • /output/host/usr/bin/python!它是指向./arm-buildroot-linux-gnueabi/sysroot/usr/bin/python 的链接吗?因为你应该使用这个。

标签: python sqlite cross-compiling buildroot


【解决方案1】:

这本来就不应该奏效。 host-python 在 Buildroot 中构建时没有 sqlite3 模块(参见HOST_PYTHON_CONF_OPTS 中的--disable-sqlite3)。所以应该不可能从setup.py 脚本中导入 sqlite3 模块。这个--disable-sqlite3 选项已经存在很长时间了。

在 2017.08 中改变的一件事是 $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages 已从 PYTHON_PATH 中删除。所以也许你之前在那里安装了一个 sqlite3 模块,并且它恰好可以工作。

对您来说最简单的解决方案可能是将--disable-sqlite3 更改为--enable-sqlite3 并使host-python 依赖于host-sqlite3。

【讨论】:

  • 我 --enable-sqlite3 并使 host-python 长期依赖于 host-sqlite3。这一次,当我合并到新版本时,我犯了一个错误并覆盖了这个配置。
猜你喜欢
  • 2017-08-12
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多