为 ARM 交叉编译 SQLite

为 ARM 交叉编译 SQLite

我在基于 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: error: size of array 'off_t_is_large' is negative
 2.conftest.c:12:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
 3.conftest.cpp:23:28: error: ac_nonexistent.h: No such file or directory
 4.conftest.c:67:13: error: invalid type argument of unary '*' (have 'int')

我怀疑它是否已经正确地进行了交叉编译。我不明白。

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

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

答案1

这对我有用(并且它可以交叉编译大多数其他第三方软件):

$ export PATH=$PATH:<path to directory containing your cross-compiler binaries>
$ cd <path to the directory containing the thirdparty code>
$ ./configure --prefix="<installation path>" --host=arm-unknown-linux-gnueabi

将你的 CFLAGS 和其他配置参数添加到配置参数中。例如,

$ ./configure --prefix="<installation path>" --host=arm-unknown-linux-gnueabi -CFLAGS="-Os" --enable-threadsafe

如果您的情况中目标系统由 arm-none-linux-gnueabi 指定,请替换上例中的主机:

$ ./configure --prefix="<installation path>" --host=arm-none-linux-gnueabi -CFLAGS="-Os" --enable-threadsafe

将从您设置的主机中找到 GCC、CC、AR 等的路径。

相关内容