交叉编译:SQLite3

背景:

交叉编译程序时,报错如下:

/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../lib/gcc/aarch64-linux-gnu/6.3.0/../../../../aarch64-linux-gnu/bin/ld: cannot find -lsqlite3
collect2: error: ld returned 1 exit status
make: *** [client] Error 1

提示没有sqlite3的库。需要我们交叉编译一下。

下载地址:

https://sqlite.org/2018/sqlite-autoconf-3260000.tar.gz

编译过程

tar -vxf sqlite-autoconf-3260000.tar.gz 
cd sqlite-autoconf-3260000/
mkdir __install 
./configure --host=arm-linux --prefix=$PWD/__install CC=aarch64-himix100-linux-gcc
make 
make install

查看交叉编译出来的库:

root@ubuntu:/neo/arm/sqlite3/sqlite-autoconf-3260000/__install# file ./lib/* 
./lib/libsqlite3.a:        current ar archive
./lib/libsqlite3.la:       libtool library file, 
./lib/libsqlite3.so:       symbolic link to `libsqlite3.so.0.8.6' 
./lib/libsqlite3.so.0:     symbolic link to `libsqlite3.so.0.8.6' 
./lib/libsqlite3.so.0.8.6: ELF 64-bit LSB  shared object, ARM aarch64, version 1 (SYSV), dynamically linked, not stripped
./lib/pkgconfig:           directory 
root@ubuntu:/neo/arm/sqlite3/sqlite-autoconf-3260000/__install# 

确实是ARM架构下的。

拷贝库到交叉编译链:

cp -af ./lib/* /opt/hisi-linux/x86-arm/aarch64-himix100-linux/target/usr/lib
cp -af ./include/* /opt/hisi-linux/x86-arm/aarch64-himix100-linux/target/usr/include/

其中 :

-a:保持源文件的原有结构和属性;

-f:强制覆盖已经存在的目标文件,而不提示用户进行确认。

完成

两个报错:

下面的报错是因为编译出来的库文件,架构不对应。

/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../lib/gcc/aarch64-linux-gnu/6.3.0/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible

/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../target/usr/lib/libsqlite3.so when searching for -lsqlite3


下面的报错是因为编译器正在运行两次。可以通过重新配置configure文件,来解决。

/usr/bin/ld: .libs/sqlite3.o: Relocations in generic ELF (EM: 183)

参考链接:
https://blog.csdn.net/wonxxx/article/details/25072745

https://blog.csdn.net/shaochat/article/details/40857717

你可能感兴趣的:(Linux,SQLite3,Linux,嵌入式_交叉编译)