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共同构成,两者通 ...
随机推荐
- WebService 检测到有潜在危险的 Request.Form 值
在web.config 的 <system.web> <pages validateRequest="false" /> <httpRuntime r ...
- Winform Treeview 排序及图标处理
一.排序 1. 继承 IComparer 2. treeView1.TreeViewNodeSorter = this; 3. 实现IComparer public int Compare(ob ...
- sso接口的调用
之前一直想sso接口已经写好了,登录注册功能是怎么调用的呢?原来在登录注册的jsp页面实现的接口的调用,页面的校验和验证功能在jsp页面即可实现. 注册页面: <%@ page language ...
- string::replace
#include <string> #include <cctype> #include <algorithm> #include <iostream> ...
- es6 export 和 export default区别
相信很多人都使用过export.export default.import,然而它们到底有什么区别呢? 在JavaScript ES6中,export与export default均可用于导出常量.函 ...
- Hadoop生态圈-Kafka的旧API实现生产者-消费者
Hadoop生态圈-Kafka的旧API实现生产者-消费者 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.旧API实现生产者-消费者 1>.开启kafka集群 [yinz ...
- Ubuntu下安装BeautifulSoup4
先去下载beautifulsoup的安装包https://www.crummy.com/software/BeautifulSoup/bs4/download/4.0/ 下载完之后解压 tar -xv ...
- PDF截取矢量图
PDF截取矢量图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 方法与步骤 下载并安装 Adobe Acrobat X Pro 软件 点击右侧按钮(工具)-页面-裁剪-单击并选择区域-双击实 ...
- disabled属性对form表单向后台传值的影响
在form表单里,如果对input加入disabled="disabled"或disabled="true"等属性,form表单提交的时候,就不会传值到后台. ...
- html5 canvas从圆开始
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...