简单介绍嵌入式开发环境搭建
目录
- 一、Zmodem
- 二、samba服务
- 三、VMtools工具安装
- 四、gcc简介
- 五、gdb
- 六、AutoTools
一、Zmodem 客户机与linux服务器传递文件的协议
使用SecureCRT-选项-会话选项,X/Y/Zmodem,目录-上传(rz命令默认打开的目录),下载(sz传递文件到windows的路径)
命令
rz:接收文件,从window传送文件到linux,保存到当前目录
sz [文件名]:发送文件到下载目录
二、samba服务 类似windows网上邻居的SMB协议,把linux当成假的windows
安装,sudo apt install samba
修改配置文件,/etc/samba/smb.conf,主要修改需要共享哪个目录,以及这个目录的访问权限
[chw_share] #共享文件夹名
comment = My share #标题
path = /home/chw/lab #共享文件夹路径
writable = yes #权限,可写
browseable = yes #权限,可浏览
samba用户管理,可以添加linux已有的用户名,另外设置密码
添加用户:sudo smbpasswd -a chw #-a,添加;设置密码
重启samba服务:
sudo /etc/init.d/smbd restart
sudo /etc/init.d/nmbd restart
windows访问linux共享文件方式:cmd,\192.168.184.128;或映射网络驱动器,\192.168.184.128\chw_share
三、VMtools工具安装 关闭虚拟机,CD/DVD、CD/DVD2和软盘设置为自动检测,重启虚拟机,此时虚拟机选项-安装VMware Tools可选
cd /media/chw/VMware Tools,进入目录
解压缩安装包,tar -zxvf VMwareTools*.tar.gz -C /tmp
进入解压缩目录,运行可执行程序开始安装,./vmware-install.pl
虚拟机设置-选项-共享文件夹-总是启用-添加-选择windows系统一个文件夹作为共享文件夹,在linux系统中,/mnt/hgfs/目录下也会出现一个同名的文件夹,和windows的实现共享
【linux/嵌入式|嵌入式开发第一阶段,环境搭建】sourceInsight
linux运行sudo apt-get install wine,安装wine
下载source Insight4安装包
wine sourceinsightsetup.exe,安装sourceinsight
破解sourceinsight,替换exe文件,导入lic文件
四、gcc简介 GCC(GNU C Compiler,www.gnu.org)是GNU项目中符合ANSI C标准的编译系统,是一个交叉编译器,特别适用于不同平台的嵌入式开发。
gcc -v,如果安装了gcc,查看版本信息
GCC程序编译过程
.c源文件->预处理Pre-Processing得到.i预编译文件->编译Compiling得到.s汇编文件->汇编Assembling得到.o目标文件->链接(打包关联)Linking得到可执行文件
GCC支持的后缀名
后缀名 对应的语言
.c C原始程序
.C/.cc/.cxx C++原始程序
.m Objective-C原始程序
.i 已经预处理的C原始程序
.ii 已经预处理的C++原始程序
.s/.S 汇编语言原始程序
.h 预处理文件(头文件)
.o 目标文件,还未链接的二进制文件
.a/.so 编译后的库文件,静态库和动态库
1、编译过程参数
选项 含义
-c 只编译不链接,生成目标文件:gcc -c helloGCC.s -o helloGCC.o//编译生成目标文件
-S 只编译不汇编,生成汇编代码:gcc -S helloGCC.i -o helloGCC.s//生成汇编文件
-E 只预编译:gcc -E helloGCC.c -o helloGCC.i //预编译
-g 包含调试信息:gcc -g helloGCC.c -o helloGCC2//加入调试信息
-o 指定目标输出文件:gcc helloGCC.o -o helloGCC//链接生成可执行文件
-I[dir] 搜索头文件路径(大写i,后面跟包含的头文件路径)
扩展:file helloGCC.o//查看文件信息,版本,构架,位数,二进制文件
2、库选项
linux下静态库:在编译的时候就把库文件完全的链接成可执行文件,发布时不再需要库文件,格式,.a [libname.a]
linux下动态库:在运行时调用,在用到时才加载库函数,发布时要包含库文件,格式,.so [libname.so.[主版本号.次版本号.发行号]]
选项 含义
-static 静态编译
-shared 生成动态库文件,进行动态编译
-L dir 添加依赖库文件搜索路径
-fPIC 生成使用相对位置无关的目标代码(position independent code)
动态库和静态库在编译时相同,区别只在链接的时候
1)、编译静态库文件:
a、先生成目标文件.o gcc -c countlib.c//生成.o文件,countlib.o
b、调用ar crv [.a] [.o] ar crv countlib.a countlib.o//打包生成静态链接库countlib.a
c、调用静态链接库,gcc -o [file] [file.c] -L. [file.a] gcc -o count count.c -L./ countlib.a//调用静态链接库
2)、编译动态链接库
a、生成位置无关的目标代码,gcc -fPIC -c [.c] gcc -fPIC -c countlib.c//生成.o目标文件,countlib.o
b、gcc -shared -o [.so] [*.o] gcc -shared countlib.o -o countlib.so//生存动态链接库countlib.so
c、调用动态库,gcc -o [file] [file.c] -L. [file.so] gcc count.c -o count2 -L./ countlib.so//隐式调用动态库so
3、警告选项
选项 含义
-w 关闭所有告警
-Wall 发出gcc提供的所有有用告警 gcc -Wall hello.c -o hello//显示所有告警信息
-pedantic 发出ansi c的所有警告
4、优化选项
选项 含义
-Olevel 优化等级,一般在最终发布的时候使用,0~3
五、gdb gcc -g count.c -o count,生成带调试信息的可执行程序
which gdb,查询gdb命令所在路径
gdb count,启动gdb
0、查看源码
list,缩写l
1、打断点
b(reak) 函数名,b svalue [在函数svalue打断点]
b(reak) 行号,b 10 [在第10行打断点]
b(reak) 文件名:行号
b(reak) 行号 if 条件,b 14 if x > 1 [只有x>1的时候,14行的断点才有效]
2、查看断点
info break,查看断点,缩写i b
3、删除断点
delete 断点号,删除断点,缩写d,d 3 [删除第3个断点]
4、运行
r(un),程序运行,遇到断点停留
c(ontinue),继续往下运行,到下一个断点,所有断点结束后退出运行
q(uit),退出gdb
5、单步调试
next – step over,遇到函数不进入函数体,进入下一步代码
step – step into,进入函数体
finish – step return,直接返回当前的函数
6、打印值
p(rint),打印变量
7、监控值
watch ,设置监控点
8、wi,预览模式进行调试
六、AutoTools 自动生成makefile文件
GNU官网帮助
www.gnu.org/software/autoconf/manual/autoconf.html(www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.70/autoconf.html)
1、autoscan
用来扫描源代码目录,生成configure.scan; configure.scan包含了系统配置的基本选项,里面是一些宏定义,需要将它改名为configure.in
2、aclocal
是一个perl脚本程序,aclocal根据configure.in文件的内容,自动生成aclocal.m4文件,生成的aclocal.m4是宏展开文件
3、autoconf
用来产生configure文件,configure.in文件是一些宏,经过autoconf处理后变成检查系统特性、环境变量、软件必须的参数的shell脚本
4、autoheader
自动生成config.in,在configure生成config.h时候的in文件
5、automake
使用automake --add-missing来产生makefile.in,makefile.am是用来生成mmakefile.in的,需要手工编辑。
sudo apt install autoconf,安装软件包
6、演示
autoscan,生成configure.scan,改名为生成configure.ac(或.in都可以)
醒不了的梦
推荐阅读
- Linux|CentOS7 安装 kafka
- windows|惊现 Windows 11 “隐藏版”!网友(微软为何要让学生受这种苦())
- curl 的用法
- kubeedge|kubeedge1.3.1阿里云ECS部署(基于公网IP)
- Google Adsense 建站要求
- 操作系统(王道考研)|2.7操作系统(读者—写者问题 哲学家进餐问题 管程 )
- linux之pkill命令
- Linux|VMware ping 不通主机和主机ping不通虚拟机解决
- linux|[linux-29] 安装mysql5.7(CentOS7.6)