Mini2440移植Ncurses库(二)
时间:2011-01-12 来源:沧之声
注意:这里隐藏了一个问题
可能你的连接器(LD)仍然无法找到找到libncurses等库,这是因为我们的安装目录 并没有把lib库安装到LD可以找到的地方。我的解决方法是把ncurses相关的库添加到 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/lib/当中,我想这个应该 是LD默认的搜索路径了。
使用arm-linux-gcc编译你的程序,编译成功之后就生成了arm平台要执行的代码。 然后在开发板上通过NFS挂载你的程序告破目录(其实随便你怎么挂载只要你能找到就行)。
一般来说你会遇到如下的几个问题,我们慢慢分析。
问题一:
libncurses(w).so.5: cannot open shared object file: No such file or directory
这是因为在Mini2440开发板上面是没有与Ncurses库有关的动态库或者 静态 库,只要添加到相应的目录就可以了。比如笔者用的就是比较粗糙的方法,直接将 libncursesw.so.5,复制到/lib(该目录就是Mini2440板的库文件所在目录) 目录下面。当 然如果你的程序中使用了menua或者panel库的话,也会出现类似 的错误提示,方法同样, 将对应的库复制到/lib即可。在宿主机器的/usr/local/arm/4.3.2/lib下面可以找到所需 要的库。当然,如果你想通过添加环境变量LD_LIBRARY_PATH的方式解决也是可以的。
问题二:
Error opening terminal: vt102.
这是因为开发版上 面没有对应的终端信息。运行基于ncurses库的程序必须先设置终端信息环境变量 TERMINFO;否则会提示找不到终端信息。这个方法也简单,在开发板上建立目录 /usr/share/terminfo,然后将/usr/local/arm/4.3.2/share/terminfo/v/目录复制到此处 就可以了,里面包含了开发板的vt102终端信息,当然还有其它很多不同各类的终端信息, 如果你为了减小空间占用,可以只复制vt102相关的文件,然后在当前的shell环境中添加 环境变量。
# export TERMINFO=/usr/share/terminfo
问题三:中文乱码
这也是一个相当棘手的问题,但是在PC上面我已经解决了,请参见我的下一篇文章。如果 你知道如果在Mini2440开发板终端正常显示Ncurses程序的中文,那我非常欢迎你给我以解 答,因为这个问题苦苦困扰了我很久,到目前仍未有解决方案。我一直很郁闷。
到这里我们就讲完了如何移植Ncurses到Mini2440开发板上,并让我们的ncurses程 序非正常运行(中文乱码未曾解决)。还请高人价赐教。
参考文章:
http://blog168.chinaunix.net/space.php?uid=23089249&do=blog&id=34484
http://www.ailis.de/~k/archives/19-ARM-cross-compiling-howto.html