linux cpu占用率如何看
392
2022-09-22
交叉编译适配mips架构的GDB
交叉编译GDB
交叉编译GDB
1.下载GDB源码2.解压并创建安装目录3.编译安装4.可能遇到的错误解决方法
(1).下载termcap(2).将上面的编译安装gdb的脚本改一下(3).对于最后的权限不够无法删除PC机上termcap.h文件时
5. 可能需要交叉编译GDBSERVER,将其安装在开发板上
1.下载GDB源码
在GDB官网寻找:–version可以查看其版本,我这里是7.8的。
2.解压并创建安装目录
tar zxvf gdb-7.8.tar.gz
cd gdb-7.8/
mkdir gdb7.8_mipsel
我的板子是mips架构的。
3.编译安装
GDB源码编译安装也属于configure系列的,所以结合之前编译PHP源码、swoole源码的经验,加上最近学习了一部分shell脚本,我们可以将编译安装命令写成一个简单的shell脚本(python也可以,顺便熟悉一下python,~_~),编译安装成功后在gdb7.8_mipsel目录如下所示:
以下是编译安装脚本,以供参考:
#!/bin/bash # Copyright (C) 2018-2019 ZY mkdir gdb7.8_mipsel echo "begin to configure..." CC=mipsel-openwrt-linux-uclibc-gcc AR=mipsel-openwrt-linux-uclibc-ar LD=mipsel-openwrt-linux-uclibc-ld RANLIB=mipsel-openwrt-linux-uclibc-ranlib STRIP=mipsel-openwrt-linux-uclibc-strip ./configure --host=mipsel-openwrt-linux-uclibc --prefix=/home/ubuntu/gdb-7.8/gdb7.8_mipsel/ if [ -e "Makefile" ]; then echo "==============================" echo "configure ok,begin to make..." echo "==============================" sleep 1 make else echo "==============================" echo "configure failed" echo "==============================" sleep 1 fi if [ -e "./gdb/gdb" ]; then echo "==============================" echo "make ok,begin to make install..." echo "==============================" sleep 1 make install else echo "==============================" echo "make install failed" echo "==============================" sleep 1 fi
4.可能遇到的错误解决方法
make编译时遇到:
configure: error: no termcap library found
很明显,缺少termcap库,结合之前交叉编译其它源码的经验,没有该库则交叉编译该库,然后将相应的头文件和库文件拷贝到交叉编译工具链相关的目录下即可。
(1).下载termcap
zxvf termcap-1.3.tar.gz
cd termcap-1.3/
(2).将上面的编译安装gdb的脚本改一下
# Copyright (C) 2018-2019 ZY mkdir termcap_mipsel echo "begin to configure..." CC=mipsel-openwrt-linux-uclibc-gcc AR=mipsel-openwrt-linux-uclibc-ar LD=mipsel-openwrt-linux-uclibc-ld RANLIB=mipsel-openwrt-linux-uclibc-ranlib STRIP=mipsel-openwrt-linux-uclibc-strip ./configure --host=mipsel-openwrt-linux-uclibc --prefix=/home/ubuntu/termcap-1.3/termcap_mipsel/ if [ -e "Makefile" ]; then echo "==============================" echo "configure ok,begin to make..." echo "==============================" sleep 1 make else echo "==============================" echo "configure failed" echo "==============================" sleep 1 fi if [ -e "termcap.o" ]; then echo "==============================" echo "make ok,begin to make install..." echo "==============================" sleep 1 make install else echo "==============================" echo "make install failed" echo "==============================" sleep 1 fi
(3).对于最后的权限不够无法删除PC机上termcap.h文件时
不需理会,我们不需要将termcap安装到我们的PC机上:
然后在网上查到这样一个命令:
mipsel-openwrt-linux-gcc -print-file-name=libc.a找到我们要将头文件和库文件拷贝的位置,比如我这里:
然后将相关的头文件和库文件拷贝到对应的位置即可使gdb源码make成功,比如我这里:
cp libtermcap.a /opt/OpenWrt-Toolchain-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/lib/gcc/mipsel-openwrt-linux-uclibc/4.8.3/
cp termcap.h /opt/OpenWrt-Toolchain-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/include/
当然,这些命令都可以结合脚本放在脚本文件中执行,我这里就不再展示了。
5. 可能需要交叉编译GDBSERVER,将其安装在开发板上
我的开发板上有openwrt系统,可以直接:
opkg update
opkg install gdbserver
有的板子可能无法直接安装,或者不喜欢、不能用这个版本的gdbserver的,编译gdb源码移植gdbserver即可,如果编译出来的gdbserver太大则需要精简,关于如何精简,这里不再多说,我们本次总结的重点不在这里。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~