嵌入式学习小组
登录
直播中
李志静
7年用户
1439经验值
私信
关注
编译的三种类型是什么?
开启该帖子的消息推送
gdb
交叉编译
编译的三种类型是什么?
ARM_Linux制作嵌入式远程调试工具
回帖
(1)
马龙
2021-12-24 16:42:30
环境准备
虚拟机需配置好指定的交叉编译工具链
确保
虚拟机
<---->
PC系统
<---->
arm开发板
两两 ping 通
源码下载
http://ftp.gnu.org/gnu/gdb/
解压
tar -zxvf gdb-8.1.tar.gz
编译的三种类型
编译PC平台普通程序
该情况最为常见,编译平台与运行平台、执行平台为同一环境。
./configure 该指令相当于 :
./configure --build=x86_64-gnu-linux --host=x86_64-gnu-linux --target=x86_64-gnu-linux
ps
:这里为什么是 x86_64-gnu-linux 呢? 请看 gcc -v。
交叉编译工具链类型的程序
这类程序特殊的地方在于,它虽然在虚拟机(x86-64-linux)上运行,但目标平台确是arm。
本文介绍的 gdb 正是这种类型。
./configure --target=aarch64-linux-gnu 该指令相当于 :
./configure --build=x86_64-gnu-linux --host=x86_64-gnu-linux --target=aarch64-linux-gnu
ps
:这里我的交叉编译工具链为 aarch64-linux-gnu-gcc。
交叉编译嵌入式程序
制作运行于嵌入式平台的编译工具,本文我们需要编译的 gdbserver 就是这种类型。
./configure --host=aarch64-linux-gnuCC=aarch64-linux-gnu-gcc 该指令相当于 :
./configure --build=x86_64-gnu-linux --host=aarch64-linux-gnu --target=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc
补充
build
运行编译工具链的平台,也就是正在执行编译操作的平台。
host
可执行程序将运行的平台。如果未指定此参数,则和 --build 相同。如果 --host 和 --build 不同,是
交叉编译
;否则是
普通编译
。
target
可执行程序将处理的平台。如果未指定此参数,则和 --host 相同。一般来说,程序运行在什么平台,处理的就是什么平台,此参数值和 --host 参数相同,不需显式指定,所以通常不会关注到此参数。但在制作交叉编译工具 (如 gcc、gdb 等) 这种特殊情况下,此值和 --host 不同。
program-prefix
指定将被加到所安装程序的名字上的前缀.例如,使用 --program-prefix=arm-linux 来configure,编译的 gdb 文件名为 arm-linux-gdb 。
prefix
编译的时候用来指定程序存放路径 。不指定 prefix,可执行文件默认放在 /usr/local/bin,库文件默认放在 /usr/local/lib,配置文件默认放在 /usr/local/etc。其它的资源文件放在 /usr /local/share。
注意
:以下编译过程中出现错误,建议将文件删除后,重新解压,再编译!
编译gdb
cd /gdb8.1./configure --target=aarch64-linux-gnusudo makemake install 编译完成后,生成可执行文件在 /gdb8.1/gdb 中:
如果我们在 QtCreator 中使用,需要将其加到 Kits 中,这里可以看到其类型:
编译gdbserver
清除后重新编译
,要求 GCC 的前缀和 host、target 要保持一样。
cd /gdb8.1/gdb/gdbserver./configure --target=aarch64-linux-gnu --host=aarch64-linux-gnusudo make CC=aarch64-linux-gnu-gcc
使用
先将 gdb 加入到 Kits 中,在 QtCreator 添加 Linux 通用设备并通过 Test。
将编译好的 gdbserver 移至 arm开发板。
配置好 gdb 后编写测试 demo,并打断点,调试模式生成可执行文件(arm-sdk)。将可执行文件移动至 arm 开发板。
arm 板中开启 gdbserver,监听 6666 端口。
./gdbserver :6666 ./testapp
那么在虚拟机中如何开启调试呢?
环境准备
虚拟机需配置好指定的交叉编译工具链
确保
虚拟机
<---->
PC系统
<---->
arm开发板
两两 ping 通
源码下载
http://ftp.gnu.org/gnu/gdb/
解压
tar -zxvf gdb-8.1.tar.gz
编译的三种类型
编译PC平台普通程序
该情况最为常见,编译平台与运行平台、执行平台为同一环境。
./configure 该指令相当于 :
./configure --build=x86_64-gnu-linux --host=x86_64-gnu-linux --target=x86_64-gnu-linux
ps
:这里为什么是 x86_64-gnu-linux 呢? 请看 gcc -v。
交叉编译工具链类型的程序
这类程序特殊的地方在于,它虽然在虚拟机(x86-64-linux)上运行,但目标平台确是arm。
本文介绍的 gdb 正是这种类型。
./configure --target=aarch64-linux-gnu 该指令相当于 :
./configure --build=x86_64-gnu-linux --host=x86_64-gnu-linux --target=aarch64-linux-gnu
ps
:这里我的交叉编译工具链为 aarch64-linux-gnu-gcc。
交叉编译嵌入式程序
制作运行于嵌入式平台的编译工具,本文我们需要编译的 gdbserver 就是这种类型。
./configure --host=aarch64-linux-gnuCC=aarch64-linux-gnu-gcc 该指令相当于 :
./configure --build=x86_64-gnu-linux --host=aarch64-linux-gnu --target=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc
补充
build
运行编译工具链的平台,也就是正在执行编译操作的平台。
host
可执行程序将运行的平台。如果未指定此参数,则和 --build 相同。如果 --host 和 --build 不同,是
交叉编译
;否则是
普通编译
。
target
可执行程序将处理的平台。如果未指定此参数,则和 --host 相同。一般来说,程序运行在什么平台,处理的就是什么平台,此参数值和 --host 参数相同,不需显式指定,所以通常不会关注到此参数。但在制作交叉编译工具 (如 gcc、gdb 等) 这种特殊情况下,此值和 --host 不同。
program-prefix
指定将被加到所安装程序的名字上的前缀.例如,使用 --program-prefix=arm-linux 来configure,编译的 gdb 文件名为 arm-linux-gdb 。
prefix
编译的时候用来指定程序存放路径 。不指定 prefix,可执行文件默认放在 /usr/local/bin,库文件默认放在 /usr/local/lib,配置文件默认放在 /usr/local/etc。其它的资源文件放在 /usr /local/share。
注意
:以下编译过程中出现错误,建议将文件删除后,重新解压,再编译!
编译gdb
cd /gdb8.1./configure --target=aarch64-linux-gnusudo makemake install 编译完成后,生成可执行文件在 /gdb8.1/gdb 中:
如果我们在 QtCreator 中使用,需要将其加到 Kits 中,这里可以看到其类型:
编译gdbserver
清除后重新编译
,要求 GCC 的前缀和 host、target 要保持一样。
cd /gdb8.1/gdb/gdbserver./configure --target=aarch64-linux-gnu --host=aarch64-linux-gnusudo make CC=aarch64-linux-gnu-gcc
使用
先将 gdb 加入到 Kits 中,在 QtCreator 添加 Linux 通用设备并通过 Test。
将编译好的 gdbserver 移至 arm开发板。
配置好 gdb 后编写测试 demo,并打断点,调试模式生成可执行文件(arm-sdk)。将可执行文件移动至 arm 开发板。
arm 板中开启 gdbserver,监听 6666 端口。
./gdbserver :6666 ./testapp
那么在虚拟机中如何开启调试呢?
举报
更多回帖
rotate(-90deg);
回复
相关问答
gdb
交叉编译
protel *** 一个库安装了
三种类型
的,怎么回事?
2012-11-28
2410
进程
类型
及
三种
状态
2021-04-02
1436
收集选择
三种
信号或数值
2018-04-27
2524
ISE VIO的使用
2019-04-27
6973
三种类型
的功率MOSFET概述
2019-08-08
4299
同轴/双轴/
三
轴射频电缆的区别是什么
2021-01-18
1522
请问循迹小车的程序
编译
后出现的这
三种
错误该怎么办?
2019-10-15
1024
求大神解答!!拜托拜托了!!!
2016-05-28
2392
STM32
三种
启动方式是什么
2021-12-15
1385
怎么判断模拟技术的3
种类型
放大器?
2019-08-08
2054
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分