Ubuntu编译gdb-ARM调试环境
参考Qt可用的gdb编译,以及交叉编译gdbserver,以及配置QtCreator远程调试
**编译脚本 **如下:
#!/bin/bash
echo -e "\033[32m 正在执行步骤一:检查python-dev包 \033[0m"
chkpydev=$(dpkg -l | grep python-dev)
if [ "$chkpydev" == "" ]; then
sudo apt-get install python-dev --force-yes
fi
echo "#include <stdio.h>" > check.c
echo "#include <dlfcn.h>" >> check.c
echo "int main() { void *handle; void *pPyUnicodeUCS4_Decode = NULL; handle = dlopen(\"libpython2.7.so\", RTLD_LAZY); if (!handle)return 1; dlerror(); pPyUnicodeUCS4_Decode = dlsym(handle, \"PyUnicodeUCS4_Decode\"); if (dlerror() != NULL)return 2; dlclose(handle); return 3; }" >> check.c
gcc -rdynamic -o check check.c -ldl && ./check
checkpy=$?
rm check
rm check.c
echo -e "\033[32m 正在执行步骤二:gdb的configure \033[0m"
case $checkpy in
1)
echo "没有找到libpython2.7.so"
exit
;;
2)
./configure CFLAGS="-O3" CXXFLAGS="-O3" --target=arm-none-linux-gnueabi --prefix=/opt/arm-none-linux-gnueabi-gdb/ --with-python
;;
3)
./configure CFLAGS="-DPy_UNICODE_WIDE -O3" CXXFLAGS="-DPy_UNICODE_WIDE -O3" --target=arm-none-linux-gnueabi --prefix=/opt/arm-none-linux-gnueabi-gdb/ --with-python
;;
esac
echo -e "\033[32m 正在执行步骤三:编译和安装gdb \033[0m"
make -j8
if [ $? -eq 0 ]; then
make install
echo -e "\033[32m gdb已安装到/opt/arm-none-linux-gnueabi-gdb/目录下 \033[0m"
else
echo -e "\033[31m gdb编译失败 \033[0m"
exit
fi
echo -e "\033[32m 正在执行步骤四:gdbserver的confiure \033[0m"
cd gdb/gdbserver
./configure CFLAGS="-O3" CXXFLAGS="-O3" --target=arm-none-linux-gnueabi --prefix=/opt/arm-none-linux-gnueabi-gdb/ --host=arm-none-linux-gnueabi
echo -e "\033[32m 正在执行步骤五:编译和安装gdbserver \033[0m"
make -j8
if [ $? -eq 0 ]; then
make install
echo -e "\033[32m gdbserver已安装到/opt/arm-none-linux-gnueabi-gdb/目录下 \033[0m"
else
echo -e "\033[31m gdbserver编译失败 \033[0m"
exit
fi
echo -e "\033[32m 正在执行步骤六:压缩可执行文件,将gdb放入交叉编译工具链 \033[0m"
cd /opt/arm-none-linux-gnueabi-gdb/bin/
cp arm-none-linux-gnueabi-gdbserver gdbserver
arm-none-linux-gnueabi-strip gdbserver
echo "arm-none-linux-gnueabi-strip gdbserver"
strip arm-none-linux-gnueabi-gdb arm-none-linux-gnueabi-run
echo "strip arm-none-linux-gnueabi-gdb arm-none-linux-gnueabi-run"
gdb_path=$(which arm-none-linux-gnueabi-gdb)
cross_path=${gdb_path%/*}/..
mv $(which arm-none-linux-gnueabi-gdb) $cross_path/bin/arm-none-linux-gnueabi-gdb.bk
echo "mv $cross_path/bin/arm-none-linux-gnueabi-gdb $cross_path/bin/arm-none-linux-gnueabi-gdb.bk"
cp arm-none-linux-gnueabi-gdb $cross_path/bin
echo "cp arm-none-linux-gnueabi-gdb $cross_path/bin"
mv $(which arm-none-linux-gnueabi-run) $cross_path/bin/arm-none-linux-gnueabi-run.bk
echo "mv $cross_path/bin/arm-none-linux-gnueabi-run $cross_path/bin/arm-none-linux-gnueabi-run.bk"
cp arm-none-linux-gnueabi-run $cross_path/bin
echo "cp arm-none-linux-gnueabi-run $cross_path/bin"
cd ..
cp -rf share $cross_path
echo "cp -rf share $cross_path"
echo -e "\033[32m 已经将新的arm-none-linux-gnueabi-gdb放入交叉编译工具链目录$cross_path/bin \033[0m"
echo -e "\033[32m 完成 \033[0m"
Ubuntu编译gdb-ARM调试环境的更多相关文章
- 编译出arm Android环境下的C++可执行文件
要想编译出arm环境的C++可执行文件主要就是利用交叉编译器进行编译.编译过程本身都大同小异. 1.安装交叉编译器,交叉编译器的安装方法大致有下面几种: A.debian/ubuntu 系统可以直接输 ...
- Ubuntu下gdb远程调试--warning: Could not load vsyscall page because no executable was specified解决方案
1. 首先安装gdbserver apt-get install gdbserver 2. 编译-g 程序 gcc -g test_gdb.c -o test_gdb 源码如下: #include & ...
- Ubuntu 编译安装搭配LNMP 环境
这里用Nginx1.2.0+mysql5.6.33+php5.6.2搭配安装环境 ---------------------------------------------Nginx BEGIN--- ...
- gdb各种调试命令和技巧
陈皓:用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台 ...
- 配置Windows 2008 R2 64位 Odoo 8.0 源码PyCharm开发调试环境
安装过程中,需要互联网连接下载python依赖库: 1.安装: Windows Server 2008 R2 x64标准版 2.安装: Python 2.7.10 amd64 到C:\Python27 ...
- GDB代码调试与使用
GDB代码调试与使用 Linux下GDB调试代码 源代码 编译生成执行文件 gcc -g test.c -o test 使用GDB调试 启动GDB:gdb test 从第一行列出源代码:list 直接 ...
- 配置Windows 2008 R2 64位 Odoo 8.0/9.0 源码开发调试环境
安装过程中,需要互联网连接下载python依赖库: 1.安装: Windows Server 2008 R2 x64标准版 2.安装: Python 2.7.10 amd64 到C:\Python27 ...
- win10下搭建jz2440v3(arm s3c2440)开发及gdb调试环境【转】
本文转载自:https://blog.csdn.net/newjay03/article/details/72835758 本来打算完全在Ubuntu下开发的,但是水平有限,没有在Ubuntu下找到合 ...
- 嵌入式arm linux环境中gdb+gdbserver调试
一.前言嵌入式Linux系统中,应用开发过程中,很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序.采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采 ...
- DM368 arm板GDB远程调试
参考: http://www.erchashu.com/wiki/eclipse-cdt-gdb-arm-app-cross-debug 远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通 ...
随机推荐
- zk会话,快照,序列化,本地存储
FolloewerRequestProcessor类 追随者 输入会有不同的形式,客户端请求,提议,提交事务 通过箭头来标示追随者处理的不同路径 本地存储 事务日志和快照 SyncRequestPro ...
- sql server 小技巧(4) Sql server 排序时让空值排在最后
order by coalesce( u.sort, 2147483647) sql server 小技巧 集锦
- 【uoj126】 NOI2013—快餐店
http://uoj.ac/problem/126 (题目链接) 题意 求基环树直径. Solution zz选手迟早退役,唉,右转题解→_→:LCF 细节 拓扑排序的时候度数为0时入队.我在想什么w ...
- 解题:CTSC 2006 歌唱王国
题面 概率生成函数 对于菜鸡博主来说好难啊 其一般形式为$F(x)=\sum\limits_{i=0}^∞[x==i]x_i$,第i项的系数表示离散变量x取值为i的概率 一般的两个性质:$F(1)=1 ...
- 自己写的一个Vue
下面这里是我自己写的一个小型的vue,原理就是proxy: //Proxy天生没有prototype,因此要加上,不然extends会报错 Proxy.prototype = Proxy.protot ...
- Scala进阶之路-面向对象编程之类的成员详解
Scala进阶之路-面向对象编程之类的成员详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Scala中的object对象及apply方法 1>.scala 单例对象 ...
- Oracle 重要知识点
这些是最简单的,理解这些再去看其他的高深一点的吧....... 游标 oracle里面的游标分为四种情况,分别是LOOP循环,FOR循环,删除,更新 1.LOOP循环 检索EMP表.使用LOOP循环语 ...
- Hadoop Yarn源码 - day1
Hadoop 2.6.0下面的关于Yarn工程,如下所示,主要有以下七个module: hadoop-yarn-api:和外部平台交互的接口 hadoop-yarn-applications hado ...
- Spark记录-Spark作业调试
在本地IDE里直接运行spark程序操作远程集群 一般运行spark作业的方式有两种: 本机调试,通过设置master为local模式运行spark作业,这种方式一般用于调试,不用连接远程集群. 集群 ...
- bzoj千题计划174:bzoj1800: [Ahoi2009]fly 飞行棋
http://www.lydsy.com/JudgeOnline/problem.php?id=1800 圆上两条直径构成矩形的对角线 #include<cstdio> using nam ...