我在基于 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 等的路径。