交叉编译gdb遇到no termcap library found的解决方法
来源:互联网 发布:中国文明知乎 编辑:程序博客网 时间:2024/06/06 16:34
这星期在是用ejtag的时候缺少了gdb工具,因此自己需要手动编译一个gdb工具,编译过程中遇到了一些错误,翻阅了大量的网上资料解决了这些问题,从而也学习了一下交叉编译源码包的方法,这里做一个总结。
首先去官方网站下载gdb的源码包,我下载的7.4.1版本的源码包,解压开来,进入到源码包的根目录下。对于一个源码包,拿到手里首先要阅读的就是README,然后看一下INSTALL文件,这个文件里编译源码包的步骤。
基本上所有的源码包都是三步,configure,make,make install。
首先执行的就是./configure,这是一个配置的脚本。后面2步用到的很多很多配置都是在这里进行的,比如说编译所用的工具之类,所以交叉编译必须要配置这里,可以执行./configure --help查看后面参数的类型,对于交叉编译,主要就是有三个参数:--build --host --target。
System types:--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
--target=TARGET configure for building compilers for TARGET [HOST]
--build参数是指你编译源码包的系统环境,可以通过查看系统的环境变量来获取,执行set命令可以看到 MACHTYPE=i686-pc-linux-gnu,则--build=i686-pc-linux-gnu。
--host参数指的是编译出来的工具运行在什么系统上,我编译出来的gdb是要运行在龙芯1b的开发板上,因此环境就是mipsel-linux的环境,如果你的是arm的开发板,就是arm-linux的环境。
--target参数指的是编译出的工具所要操作的系统,这个必须要理解明白,比如说我编译出来的gdb要在我的电脑上运行,但是要调试交叉编译出来的mips指令集的程序,这个时候呢,--target就要是mipsel-linux,但是--host是i686-pc-linux-gnu。
综上所述,交叉编译第一条命令应该是:
./configure --build=i686-pc-linux-gnu --host=mipsel-linux --target=mipsel-linux --prefix=/install.
第二步就是执行make,交叉编译gdb的时候make会出现下面这样一个错误:
configure: error: no termcap library found make[1]: *** [configure-gdb] Error 1 make: *** [all] Error 2
很明显这是缺少一个termcap库,这是一个终端数据库,可以从官网下载一个版本的源码包,这里需要注意的是这个源码包也许要交叉编译,那是因为这个是你交叉编译gdb需要的库,在configure时可以指定--prefix指定安装目录,交叉编译安装完成后必须要将这个库放在交叉编译工具gcc(我的是mipsel-linux-gcc)的默认搜索库目录下。到你的交叉编译工具目录下,怎样查看默认搜索库的目录在哪里呢,执行下面的命令:
XXXXXXX-linux-gcc -print-file-name libc.a
就会显示出交叉编译工具所使用的库的默认搜索目录了。
然后将termap.h拷贝到默认目录下的include下,将libtermcap.a拷贝到默认目录下的lib下。
这样make时XXX-linux-gcc就可以找到这个库进行编译,make就可以通过啦!
然后make install,可以在configure时指定安装目录--prefix,这样便于寻找编译生成的工具。
这样我们就可以找到我们需要的gdb工具啦!
如果我们不交叉编译gdb,而是编译在本机上试用的gdb时nake不会碰到这个错误,那是因为本机gcc默认库搜索目录/usr/lib下有这个库libtermcap.a,但是这是一个链接文件,链接到了libncurses.a上,那是因为termcap库是一个比较老的终端数据库,现在都试用ncurses库代替,但是有些程序还是试用termcap库,所以系统中安装ncurses库时默认做一个链接文件,防止gdb的这种编译错误。
- 交叉编译gdb遇到no termcap library found的解决方法
- 交叉编译gdb遇到no termcap library found的解决方法
- 交叉编译gdb,并解决no termcap library found的方法
- 编译安装MYSQL,遇到configure: error: No curses/termcap library found的解决方法!
- 编译Mysql时configure: error: No curses/termcap library found 的错误解决方法
- 编译Mysql时configure: error: No curses/termcap library found 的错误解决方法
- 更新:编译Mysql时configure: error: No curses/termcap library found 的错误解决方法
- 编译Mysql时configure: error: No curses/termcap library found 的错误解决方法
- 编译Mysql时configure: error: No curses/termcap library found 的错误解决方法
- 编译Mysql时configure: error: No curses/termcap library found 的错误解决方法
- 编译Mysql时configure: error: No curses/termcap library found 的错误解决方法
- 编译Mysql时configure: error: No curses/termcap library found 的错误解决方法
- 编译Mysql configure: error: No curses/termcap library found 的错误解决方法
- 编译Mysql时configure: error: No curses/termcap library found 的错误解决方法
- 编译Mysql时configure: error: No curses/termcap library found 的错误解决方法
- No curses/termcap library found的解决办法
- centos 安装mysql遇到configure: error: No curses/termcap library found 解决方法
- Fedra 9 安装GDB时 出现 No termcap library found
- css样式兼容不同浏览器问题
- {{JS}}可变长度的参数列表: Arguments对象
- OpenGL 与 DX的争论
- HDU 1302 The Snail
- Windows下 Oralce10g和11g卸载
- 交叉编译gdb遇到no termcap library found的解决方法
- JavaScript方法call,apply,caller,callee,bind的使用详解及区别
- POJ2387—水题+变态的题
- poj 1177 / hdu 1828 Picture 矩形周长并
- 凌乱的总结我IOS的学习感受
- orz 逆天的lcs 对经典的lcs问题优化
- 引入样式表及引入html文件
- Delphi中TStringList类常用属性方法详解
- 详细介绍 GPL 协议