版权声明:版权所有!https://blog.csdn.net/weixin_38184741 https://blog.csdn.net/weixin_38184741/article/details/86544853
背景:
交叉编译程序时,报错如下:
/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/weixin_38184741/article/details/86544853