说明:网上指导的交叉编译存在,移植后不能正常使用方向键和删除键的bug,根本原因是交叉编译缺少了关联库
参考博客
移植遇到的坑
readline的移植
环境
操作系统:Ubuntu16.04
arm芯片:imx6ull
arm linux:4.1.15
交叉编译器:arm-linux-gnueabihf
一、准备步骤
sqlite3下载
博主下的是当前最新的sqlite-autoconf-3350500.tar.gz,推荐选择autoconf版本,而不是amalgamation版本。autoconf会自动检测readline、nucurses等。
ncurses下载
readline下载
ubuntu安装libeditline-dev
sudo apt-get install libeditline-dev
editline下载(网上找到相关的源码包,但交叉编译后并不是sqlite3需要的editline/readline.h,这边请大神们指正,在此先谢谢各位大神)
二、交叉编译
tar zxvf ncurses-6.2.tar.gz
cd ncurses-6.2
./configure --prefix=$PWD/install --host=arm-linux-gnueabihf CC=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
make
make install
make install 会出现错误(正确的安装方式可以自行百度,本篇移植只需要libncurses.so.6.2),看看当前目录下install的lib中是否存在libncurses.so.6.2及其链接文件libncurses.so.6与libncurses.so。用file指令验证下libncurses.so.6.2是否为arm版本。
在install目录下,sudo cp -pR * /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/
将arm版本的库与头文件放到交叉编译器的目录下,同时将install/lib中的内容拷贝到arm的/usr/lib下
tar zxvf readline-8.1.tar.gz
cd readline-8.1
//添加交叉编译头文件与库
./configure --prefix=$PWD/install --host=arm-linux-gnueabihf CC=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc CPPFLAGS=-I/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/include LDFLAGS=-L/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/lib
make
make install
在install目录下,sudo cp -pR * /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/
将arm版本的库与头文件放到交叉编译器的目录下,同时将install/lib中的内容拷贝到arm的/usr/lib下
把/usr/include/下/editline目录(由libeditline-dev生成)拷贝到/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/include
tar zxvf sqlite-autoconf-3350500.tar.gz
cd sqlite-autoconf-3350500
./configure --prefix=$PWD/install --host=arm-linux-gnueabihf CC=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc CPPFLAGS=-I/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/include LDFLAGS=-L/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/lib
make
make install
配置完确认下红框中的内容,然后进行make&&make install
然后将install中的内容拷贝到arm中
install/bin 拷贝到/usr/bin,install/lib拷贝到/usr/lib
在arm中进行验证