用于 ARM 的 Sqlite 3.7.15 交叉编译

Posted

技术标签:

【中文标题】用于 ARM 的 Sqlite 3.7.15 交叉编译【英文标题】:Sqlite 3.7.15 Crosss compilation for ARM 【发布时间】:2013-03-14 09:00:36 【问题描述】:

我在基于 ARM9 的微处理器中使用 SQLite 3 进行数据库管理。

我想在 Linux (Ubuntu 10.04) 中为我的项目交叉编译最新版本的 SQLite 3。我正在使用arm-none-linux-gnueabi-gcc compiler 进行开发。

我尝试使用以下命令进行交叉编译,

下载sqlite-amalgamation-3.7.0.tar 我把它解压出来,然后在终端上写下面的命令,

sudo ./configure --exec-prefix=/media/8CCC8E9BCC8E7F68/SQLIte3/sqliteinstall/  --host=arm --target=arm CC=/opt/arm-2011.03/bin/arm-none-linux-gnueabi-gcc AR=/opt/arm-2011.03/bin/arm-none-linux-gnueabi-ar STRIP=/opt/arm-2011.03/bin/arm-none-linux-gnueabi-strip RANLIB=/opt/arm-2011.03/bin/arm-none-linux-gnueabi-ranlib CFLAGS="-Os"

它成功交叉编译了 SQLite。

那么,

sudo make 命令。

成功运行。

现在“make install”命令。

它并没有给我一个错误,但是当我转到 config.log 文件时,我发现有一些句子如下,

1.conftest.c:17:7:错误:数组“off_t_is_large”的大小为负 2.conftest.c:12:28:致命错误:ac_nonexistent.h:没有这样的文件或目录 编译终止。 3.conftest.cpp:23:28: 错误: ac_nonexistent.h: 没有这样的文件或目录 4.conftest.c:67:13:错误:一元'*'的无效类型参数(有'int')

我怀疑它是否已正确交叉编译。 看不懂。

我将库插入到我的板上,它工作正常,但问题是速度变得非常慢。我认为有一些问题是我没有为 GCC 编译器设置任何标志。

我找不到任何选项。如何为 GCC 编译器设置特定标志,以便省略不必要的功能。

【问题讨论】:

【参考方案1】:

您可能不应该尝试手动进行交叉编译。相反,请使用嵌入式 Linux 构建系统来为您完成此任务,并完全自动化交叉编译过程。我最喜欢的当然是 Buildroot (http://buildroot.org),但还有很多其他的(质量、复杂性和功能各不相同):OpenEmbedded、Yocto、PTXdist 等。

【讨论】:

感谢您的建议。但我想使用 build Essentials 进行交叉编译。我走得更远。我发现它无法为安装它的编译器找到正确的路径。我说的对吗? 很抱歉,您提供的细节太少了。什么是“构建要素”? Build Essentials 是一个用于构建任何包的实用程序。好的,我得到了解决方案,我已经成功地为基于 ARM9 的板交叉编译了 SQLite3.7.15.2。

以上是关于用于 ARM 的 Sqlite 3.7.15 交叉编译的主要内容,如果未能解决你的问题,请参考以下文章

怎样交叉编译WebRtc到ARM Linux

sqlite3移植到arm linux

arm各种交叉编译工具的区别

那些奇葩python模块怎么交叉编译呀

ARM交叉编译器扫盲

交叉编译Python-3.6.0到aarch64/aarch32 —— 支持sqlite3