移植vim到ARM开发板

来源:互联网 发布:儿童 编程培训 编辑:程序博客网 时间:2024/05/01 04:40

1. 下载源码

vim: ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2

ncurses: https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.0.tar.gz

2. 解压到项目主目录

$ tar -jxvf ../../../tar/vim-7.4.tar.bz2 vim74/ -C ./ 

$ tar -zxvf ../../../tar/ncurses-6.0.tar.gz  -C ./ 

3.  设置环境变量并编译

3.1 设置临时环境变量

$ export PATH=/opt/ARM/mys-4279/bin:$PATH

3.2 配置vim

 ./configure --disable-gtktest --disable-gpm --disable-gui --without-x

3.3 编译vim

make CC=arm-linux-gnueabihf-gcc

term.c:33:23: fatal error: termcap.h: 没有那个文件或目录
compilation terminated.
Makefile:2724: recipe for target 'objects/term.o' failed
make: *** [objects/term.o] Error 1

若出现上面的错误是因为vim依赖库libtinfo,libtinfo而已经包含在libncurses的库里面了,所以要先交叉编译ncurses-6.0。

4. 交叉编译ncurses

4.1 建立安装目录

$ mkdir ./ncurses-build

4.2 设置临时环境变量

$ export PATH=/opt/ARM/mys-4279/bin:$PATH

$ export CC=arm-linux-gnueabihf-gcc

$ export CXX=arm-linux-gnueabihf-g++

4.3 配置ncurses-6.0

$ ./configure --prefix=/home/chy/work/board/MYS-4379/vim/ncurses-build --with-shared --without-tests  --host=arm-linux-gnueabihf

4.4 编译安装

$ make && make install

4.5 建立libtinfo软连接

$ ln -s ./libncurses.so.6.0 ./libtinfo.so.6.0

$ ln -s ./libtinfo.so.6.0 ./libtinfo.so

4.6 重新配置并编译vim

$ make CC=arm-linux-gnueabihf-gcc distclean

$ ./configure --disable-gtktest --disable-gpm --disable-gui --without-x LDFLAGS=-L/home/chy/work/board/MYS-4379/vim/ncurses-build/lib CPPFLAGS=-I/home/chy/work/board/MYS-4379/vim/ncurses-build/include/ncurses

$ make CC=arm-linux-gnueabihf-gcc

4.7  查看vim依赖的库

$ arm-linux-gnueabihf-readelf -a ./vim | grep "共享库" 

 0x00000001 (NEEDED)                     共享库:[libm.so.6]
 0x00000001 (NEEDED)                     共享库:[libncurses.so.6]
 0x00000001 (NEEDED)                     共享库:[libdl.so.2]
 0x00000001 (NEEDED)                     共享库:[libc.so.6]

5 移植到开发板

把4.7 中的库拷贝到开发板的/lib目录下,把vim拷贝到/usr/sbin目录下。可以使用NFS挂载,tftp,重新打包,vsftp等方式。

建立软连接:

# ln /usr/lib32/libncurses.so.6.0 /usr/lib32/libncurses.so.6

# ln /usr/lib32/libncurses.so.6.0 /usr/lib32/libtinfo.so.6.0

# ln /usr/lib32/libtinfo.so.6.0 /usr/lib32/libtinfo.so


运行效果并不理想,在开发板上还是使用vi比较好,因为移植时间关闭了vim的大多特性。