NUC970用codeblocks开发遇到sqlite3无法识别的问题

今天交叉编译sqlite3,用codeblocks编译后,发现编译可以通过,链接的时候,提示不能找到 libsqlite3.so文件,查找核实了一下路径,发现没有问题,文件确实放在那里。

在网上找了一下,发现有人遇到和我类似的问题:

make的时候报错:

sqlite3-shell.o: file not recognized: File format not recognized
collect2: ld returned 1 exit status

Makefile:410: recipe for target 'sqlite3' failed

文件格式不对,查了一下sqlite3-shell.o的文件格式

file sqlite3-shell.o

sqlite3-shell.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped

是x86-64的,而我要编译的是arm版本的,所以这里报错了。

刚开始,还以为是数据位数的原因,核实了一下,NUC970是32位处理器,用file libsqlite3.so查看了一下,发现也是32位的,没有问题。

再后来发现问题是出在我codeblocks是在release模式下编译的,是交叉编译工具链编译的。而sqlite3是GNU GCC编译的,即项目工程是用交叉编译工具编译的,而sqlite3是用宿主机的编译器编译的,造成两者放到一起后不能识别的问题。到此问题找到。

重新用交叉编译工具,编译了sqlite3,重新指定目录后,编译通过。

另外通过这次调试也发现,codeblocks的build messages可以看到程序中是否有语法错误,而build log可以提示链接阶段的错误。只发现编译没有语法错误还不行,必须两者都要没有问题才行。当链接没有错误时,会output size is xx KB的文件,如果没有说明就是有问题,需要排除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值