Linux常用指令
建立一个文件或文件夹的软链接:
ln -s 原名 软链接名
软链接就类似Windows下的“快捷方式”,访问它其实访问的是它指向的内容。
git仓库操作
1、通常远程操作的第一步,是使用git clone
从远程主机克隆一个版本库到本地文件夹下。
2、要获取远程仓库的代码更新,使用git pull
操作。
3、本地修改代码后,先git pull
同步远程仓库代码;再git push
到远程仓库指定分支,才能没有版本冲突。
注意:如果git clone下来的仓库代码不完整,例如某个非空文件夹一直为空,可以加上--recursive
,例如:
git clone --recursive https://github.com/aaa/myprj1.git
查看当前文件夹占用空间
root@book-virtual-machine:/test/uboot# du -sh
1.5G
查看当前文件夹下子文件夹占用空间
root@book-virtual-machine:/test/uboot# du -h --max-depth=1
208M ./oriuboot 171M ./jz2440_201611ok 401M ./jz2440_202001ori
285M ./okori
..
1.5G
查看指定文件夹占用空间:
du -hs myftp
1.5G myftp
复制文件夹到指定目录并重命名:
cp -r xxx ./zzz
ubuntu中安装deb安装包:
sudo dpkg -i 安装包.deb
修改ubuntu开机密码
和sudo su密码
passwd root//改sudo\su超级权限密码
passwd book//改用户“book”的登录密码
uboot编译(更改位置、更改编译链都可用)
//执行以下指令前,先查看/include/config.mk内容,确认你的uboot用的型号、配置!!
//因为make unconfig和make clean会清除/include/config.mk内容!!
make unconfig//我在更换编译器时加了这步
make clean
make clobber//我在更换编译器时加了这步
make mini2440_config// PS:新版本的uboot采用 make s3cxx_defconfig
make
linux kernel更改位置,可依次执行:
//不要用make distclean,会把menuconfig配置清除;
make menuconfig//不用改,保存一下
make uImage
查找内容和文件
查找内容包含xxx 的文件
grep -rn "xxx"
或者
grep "xxx" -nR
查找文件名带xxx 的文件:
find . |grep c$ |grep xxx //只在c文件中查找
find . |grep xxx //在所有文件中查找
root@book-virtual-machine:/test/uboot# cat wenjian.txt
neirong
root@book-virtual-machine:/test/uboot# grep -rn "neirong"
wenjian.txt:1:neirong
root@book-virtual-machine:/test/uboot# grep "neirong" -nR
wenjian.txt:1:neirong
root@book-virtual-machine:/test/uboot# find . |grep wenjian.txt
./wenjian.txt
删除指令:
rm a.txt
rm -f a.txt //强制删除
rm -R dir_name //删除文件夹
生成uImage并拷贝到共享文件夹
make uImage && cp arch/arm/boot/uImage /mnt/hgfs/share/
指定加载地址生成uImage,并拷贝到共享文件夹
make uImage LOADADDR=0x80008000 && cp arch/arm/boot/uImage /mnt/hgfs/share/
vscode去掉下划线
Command + Shift + P
disable err squiggles:可以去掉下划线
改变文件夹权限
chmod -R 777 /home/test
使用gdb调试内核
需在根目录建立.gdbinit脚本:
set remotebaud 115200
target remote /dev/ttyS1
ddd图形化gdb调试内核
ddd --debugger arm-linux-gdb ./vmlinux
内核生成反汇编文件
arm-linux-objdump -d vmlinux >> dumptext
修改环境变量
gedit /etc/environment
重启后查看环境变量
echo $PATH
查看环境变量版本
aarch64-linux-gnu-gcc -v
arm-none-linux-gnueabi-gcc -v
arm-linux-gcc -v
文件转换
1.elf转hex
objcopy -O ihex qq.elf qq.hex
2.hex转bin
objcopy -I ihex -O binary qq.hex qq.bin
3.elf转bin
objcopy -O binary bootelf bootbin.bin
4.bin转hex
arm-elf-objcopy-binary -O ihex a.bin a.hex
objcopy -I binary -O ihex a.bin a.hex 将a.bin转换成a.hex
5.out转bin
arm-elf-objcopy -O binary a.out a.bin
总结:
ELF文件可以转化为BIN、HEX;
HEX也可以直接转换为BIN文件;
但是BIN要转化为HEX文件必须要给定一个基地址。
而HEX和BIN不能转化为elf文件,因为ELF的信息量要大。
反汇编文件
vx:
wrenv.exe -p vxworks-6.9
objdumparm -D vxWorks > vxWorks.txt
u-boot:(.out .elf才能反汇编)
(反汇编出来的各地址居然是0开始的,有问题。应该是像system.map中的从TEXT_BASE地址开始的,bin文件无法直接反汇编)
arm-linux-objdump -D -b binary -m arm uboot.bin > uboot.asm
(下面这个方法反汇编出来的地址就是对的)
arm-linux-objdump -S u-boot > u-boot.S
arm-linux-gnueabihf-objdump -D u-boot>u-bootD.txt