嵌入式学习1
工具的学习
SSH(Secure Shell)的远程登陆
服务端使用sshd命令
客户端(client)SecureCRT实现SSH,通过ip密码登录
Zmodem实现windows和Linux之间的文件传输
ubuntu (rz
、sz
命令) rz接受文件 sz发送文件,sz发送后面接文件名
Samba服务实现Linux目录在windows上的映射
windows和windows之间通过晚上邻居的方式,实现文件共享(\符号加地址),windows和windows之间的协议为smb(send message block);在s和b后面加a和windows上的协议相区别,samba实现将Linux虚拟为一个假的windows,实现在远程windows上的共享,smbd、nmbd两个服务为Samba的服务进程。
samba需要添加用户的密码(sudo smbpasswd -a 已有的用户名
),添加的用户必须为Linux系统已有的用户,密码需要重新设置,为了防止系统密码的泄露
服务的流程:
安装服务->配置服务->重启服务
sudo apt-get install samba ## 安装samba服务
vim /etc/samba/smb.cof ## 配置samba服务
sudo /etc/init.d/smbd restart
sudo /etc/init.d/nmbd restart ## 重启samba服务
在window文件资源栏中输入\\ip
即可,或者通过工具中的网络映射,把共享文件夹映射为一个盘符
程序的学习
GCC的使用及其常用选项介绍
C语言如何变成机器指令
gcc工具常用选项的意义
Gcc的概述
最初的全名GNU C Compiler
随着支持语言的增加,变为GNU Compiler Collection
翻译官:人能理解的语言翻译为机器识别的语言
C的编译过程
文件后缀名c、cpp等,gcc通过后缀名,调用不同的编译器
gcc -o 输出的文件名 输入文件名
gcc -v -o 输出文件名 输入文件名 (-v打印编译的信息) 打印出来内容空格之后的内容为调用的文件
gcc -S -o 编译为.s文件(编译器)生成汇编命令文件
gcc -c -o 编译为.o文件(汇编器)生成二进制文件
gcc -o (链接各种.o文件)生成最终的执行程序
编译过程中的参数 | 功能 |
---|---|
-E | 只是预编译,生成.i文件 |
-S | 编译器编译,生成.s汇编代码 |
-c | 汇编器编译,生成.o目标文件 |
-o | 链接生成的各种.o文件,生成最后的执行文件 |
-o file | 指定目录输出文件 |
-I[dir] | 搜索头文件路径 |
-g | debug |
预处理
【cpp -o 生成预处理文件(替换)】
gcc -E -o 生成.i文件
define和include这两个不是关键字,因为预处理时已经处理了define和include,所以编译时已经不存在define和include的,因此编译的过程就是编译关键字及运算符号
常见错误
include出错,include双引号引用的一般是自己自定义的库寻找当前目录,<>为查找系统库函数
not found的解决:gcc -I跟查找头文件的目录 -o
链接出错
原材料不够:undefined,寻找标签是否实现,链接时是否加入
或者多了:multiple definition,多次实现了标签,只保留一个标签实现
预处理器的使用
#inlude 包含头文件,预处理器将头文件展开
#define 宏 替换 不进行语法检查
#define 宏名 宏体 (加括号)
#define ABC 5+3 printf(“The number of the %d\n”, ABC*5) 5+3*5 不加括号可能与预计结果不同
#define ABC(x) (5+(x)) 宏定义的函数
#ifdef #else #endif 条件编译,有利于debug和release版本之间的互换
gcc -D
gcc -DABC === #define ABC
预定义宏
__FUNCTION__:函数名%s
__LINE__:行号%d
__FILE__:文件名%s//方便调试
宏展开下的#、##
#
字符串化
##
链接符号
#define ABC(x) #x//进行字符串化"x",输出字符串x
#define ABC(x) day##x//进行链接day和x,输出为dayx