本文内容:Linux命令、文件类型、vi的使用、虚拟机共享目录设置、gcc编译过程、ubuntu网络配置、系统编译器配置
目录
-
Linux命令
常用命令
1.ls
列举当前目录下所有的文件和目录(Windows文件夹)
ls -l
tree 以树状的形式列举
2.pwd
显示当前工作目录
3.cd 目录名
进入这个目录
cd .. 返回上一目录
cd ~ 回家目录
cd 同上,回家目录
cd - 返回刚才的工作目录
4.touch 文件名
创建一个新文件
5.c
清屏(指令:clear,c不是系统的)
6.mkdir 目录名
创建一个新目录
7.rm 文件名(注意!!!一定要谨慎操作,删除就真的没了。)
删除文件
rm 目录名 -r 删除目录
8.cp 旧文件名 新文件名
复制旧文件,成为新文件。
cp 文件名 目录名:复制文件到目录中
9.mv 文件名 目录名
剪切文件到目录中
mv 旧文件名 新文件名:将旧文件名重命名为新文件名
10. chmod 777 文件名
赋予文件所有权限(最高)
7 八进制数 --->二进制:111 ---> rwx
5 ---> 101 -->r-x
高级命令
1.生成软连接,符号链接(类似于windows中的快捷方式)
ln 文件名 软链接名 -s (注意不要再共享目录中生成软连接,Windows不支持这种格式)
生成硬链接 (相当于给文件取了一个别名)
ln 文件名 硬链接名 (注意不要再共享目录中生成软连接,Windows不支持这种格式)
2. 查找
find +文件名
grep "a" 2.txt -Hnw (H表示打印文件名字,n打印行号,w全字匹配)
3.输出
echo 输出字符串
echo "helloworld"
cat 2.txt 查看并打印2.txt中的内容
4.给命令取别名
alias c='clear'
取消别名
unalias 别名
5.linux在线安装程序
配置网络:(步骤)
下载并安装程序:sudo apt-get install 你要下载安装程序的名字
卸载程序:apt-get remove 程序名
更新下载资源: apt-get update
linux离线安装
6.查看文件属性 file
file +文件名
7.linux当中常见的两种压缩文件
不要在共享目录里面直接解压,可能会导致错误
查看压缩包里面的内容: tar -tf 压缩名字
bz2结尾:
压缩: tar -jcf ***.tar.bz2 文件名1 文件名2
tar -jcf 88.tar.bz2 1.txt 2.txt 3.txt
解压: tar -jxf ***.tar.bz2
tar -jxf 88.tar.bz2
gz结尾:
压缩:tar -zcf ***.tar.gz 文件名1 文件名2
tar -zcf 88.tar.gz 1.txt 2.txt 3.txt
解压: tar -zxf ***.tar.bz2
tar -zxf 88.tar.bz2
-v 可以查看详细的信息 arm-linux-gcc -v
8.查看系统的所有环境变量
env
-
文件类型(7种)
- 普通文件
d 目录文件
l 链接文件(link)(类似于Windows快捷方式)
p 管道文件(Pipe)(进程间通信)
s 套件字文件(Socket)(网络通信)
c 字符设备文件(Character)这两种都是硬件的操作文件
b 块设备文件(Block)
-
vi的使用
vi文本编辑器:
Linux当中最基础的文本编辑器。
命令模式:保存,退出,撤销,复制粘贴。。。。
编辑模式:编辑、输入数据
使用方法:
使用vi打开文本之后,默认是命令模式,输入 i 切换为编辑模式。
按下键盘左上角的ESC,切换回命令模式。输入 :wq 保存并退出
命令 | 含义 |
---|---|
:wq | 保存并退出 |
:q! | 不保存直接退出 |
:w | 只保存 |
i | 切换到编辑模式 |
a | 切换到编辑模式,并把光标往后移一位 |
o | 切换到编辑模式,并换行 |
u | 撤销 |
ctrl+r | 恢复 |
yy | 复制一行 |
dd | 剪切一行 |
p | 粘贴 |
gg | 跳到第一行 |
G | 跳到最后一行 |
:%s/old/new | 将文件中所有的 old字符串替换成 new |
vi的高级用法
查找字符串:在命令模式中输入: /查找内容 从前往后查找内容(按字母’n‘不断查找下一个)
?查找内容 从后往前找
替换字符串:在命令模式输入: %s/旧的字符串/新的字符串
把每一行的第一次出现字符串的位置替换
%s/旧的字符串/新的字符串/g
把所有的字符串换成新的
n,ms/旧的字符串/新的字符串/g
把第n行开始到第m行所有替换
实现代码的跳转 :50gg 跳到50行
实现代码跳转
1.安装软件 ctags ---- sudo apt-get install ctags
2.在项目的最顶层目录创一个关联文件(在创建的目录下运行ctags -R),会生成一个tags文件
3.配置文件/etc/vim/vimrc
在50行下面添加
set ai
set tags+=./tags
set tags+=/usr/include/tags
进入到/usr/include目录下运行ctags -R
4.打开项目中任意一个文件把光标移动到函数或变量名上在按ctrl+],返回ctrl+o:
-
虚拟机共享目录的设置
在Windows中设置一个文件夹,将这个文件夹挂载到Linux中。
设置步骤:
1.在Windows中新建一个文件夹,名字最好是英文。
2.虚拟机-设置-选项-共享文件夹-选择已启用-将上面的文件夹添加到里面去
3.看看是否挂载成功?进入挂载目录
cd /mnt/hgfs/winshare(输入cd /mn 之后一直按TAB键可以自动补齐)
备注:
1.如果进入cd /mnt/hgfs之后,下面没有任何目录,说明挂载失败。
解决方法:先将当前的Ubuntu关机。
打开VMware的安装目录,找到 vmplayer(三个黄色的箭头)
打开虚拟机,找到Ubuntu标准教学系统。
进入之后,再去看看是否有挂载目录
cd /mnt/hgfs/winshare
2.建好共享目录之后,以后就可以在Windows环境写代码了~可以自己下载代码编辑器:Notepad++、Sublime、VC
-
gcc编译过程
编译指令:gcc hello.c -o hello
gcc 调用gcc编译器
hello.c 待编译的.c文件(可以1个以上,中间使用空格隔开)
-o 输出选项(output)
hello 最终程序名(名字可以随便取)
另外的编译指令:
gcc -o hello hello.c
gcc hello.c (直接输出为 a.out 程序)
上面的编译指令,对于一个.c文件来说,编译过程分为4步:
1.预处理 :gcc hello.c -E -o hello.i
一般来说,生成.i文件
使用预处理器cpp,完成宏展开,处理条件编译,删除注释工作。
2.编译 (翻译):gcc hello.c -S -o hello.s
一般来说,生成.s文件
调用编译器cc1,把源程序翻译成对应于目标系统的汇编文件.s
3.汇编 :gcc hello.c -c -o hello.o
一般来说,生成.o文件
调用汇编器as,将汇编指令翻译成机器指令,生成可重定位目标文件
4.链接 :gcc hello.c -o hello
将以上所有内容进行链接,最终生成程序
调用链接器ld,将生成的可重定位文件与相关库文件链接,生成可执行目标文件
刚开始写代码,最好在编译指令后面加上 -Wall ,让编辑器不忽略任何警告。
编译时:
test.c:5:2: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]
test.c:5:2: warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by default]
解决方法:加上‘printf’这个函数的头文件
-
ubuntu网络配置:
1,检查电脑网线是否插好,确保 虚拟机---设置---网络适配器---已连接,桥接模式
2,检查网络是否通畅,如果没返回信息出来,往下面看。
ping www.baidu.com
3,使用ifconfig查看当前活跃网络接口,是否有eth0(有线网卡)
ifconfig
4,配置IP地址、子网掩码、网关地址
sudo vi /etc/network/interfaces
a.)确保此文件中有以下信息:(固定IP地址为192.168.12.xxx)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.12.xxx
gateway 192.168.12.1
netmask 255.255.255.0
b.)或者:(动态IP地址,就是系统自动获取IP)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
5,重启网络服务(ubuntu-12.04)
sudo /etc/init.d/networking force-reload
sudo /etc/init.d/networking restart
重启网络服务(ubuntu-14.04以上)
sudo service networking force-reload
sudo service networking restart
6,配置DNS服务
sudo vi /etc/resolvconf/resolv.conf.d/base
确保此文件中有以下信息:
nameserver 113.57.184.2
nameserver 114.114.114.114
nameserver 202.114.176.10
7,重启DNS服务
sudo /etc/init.d/resolvconf restart(ubuntu-12.04)
sudo service resolvconf restart(ubuntu-14.04以上)
8,重新启停以下虚拟网卡
sudo ifconfig eth0 down
sudo ifconfig eth0 up
9,手工添加默认网关
sudo route add default gw 192.168.12.1
10,终极大招:重启电脑
11,如果还是不行,选择VM虚拟机---编辑---虚拟网络编辑器---还原默认设置。
-
系统编译器配置
windows --》可执行程序是exe格式
linux --》可执行程序ELF格式
LSB --》小端序
gcc --》只适合在intel的x86平台cpu上运行(预处理,编译,汇编,链接)
arm-linux-gcc ---》开发板使用的是ARM架构的cpu
(1)ARM架构--->ARM架构的cpu
手机,平板
ARM -->英国一家半导体公司,负责芯片的内核设计,自己不生成芯片
ARM架构的芯片:分为两大系列
cortex A --》高端应用场合(手机) A7 A8 A15 A53 A73
cortex M --》低端 stm32(比51单片高级)
(2)安装交叉工具链
arm-linux-as 编译ARM 汇编程序
arm-linux-ar 把多个.o 合并成一个.o 或静态库(.a)
arm-linux-ranlib 为库文件建立索引,相当于arm-linux-ar
arm-linux-ld 连接器(Linker), 把多个.o 或库文件连接成一个可执行文件
arm-linux-objdump 查看目标文件(.o)和库(.a)的信息
arm-linux-objcopy 转换可执行文件的格式
arm-linux-strip 去掉elf 可执行文件的信息. 使可执行文件变小
arm-linux-readelf 读elf 可执行文件的信息
arm-linux-gcc 编译.c 或.S 开头的C 程序或汇编程序
arm-linux-g++ 编译c++程序
开发板上不允许编译程序的
交叉编译:程序编写,编译在PC端进行,但是程序的运行是在开发板上执行
步骤:
1.将压缩包拷贝到家目录(纯粹的linux环境中),然后解压
2.设置环境变量(如果不设置,每次要写arm-linux-gcc的绝对路径,很麻烦)
环境变量:系统默认的一个路径
export PATH=/home/gec/arm-2009q3/bin:$PATH
步骤:
a.将arm-linux-gcc-4.4.3.tar.gz解压到Ubuntu
cd /mnt/hgfs
sudo tar zxvf arm-linux-gcc-4.4.3.tar.gz -C /
b.将交叉编译工具拷贝到用户目录
cd /opt/FriendlyARM/toolschain
sudo cp 4.4.3 /usr/local/arm -rf
c.配置环境变量
vi ~/.bashrc
修改最后两行的环境变量
export PATH=/usr/local/arm/4.4.3/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/arm/4.4.3/lib:$LD_LIBRARY_PATH