Linux 常用指令

#1:”控制台指令导入 导出指令:     rz (导入)或者 rs(导出)

//如果提示没有这个指令 安装lrzsz

 在终端中,输入命令,自动安装,简单方便:

sudo apt-get install lrzsz  (乌班图)     ;                 yum install lrzsz(contOs)

输入导入rz  会弹出一个框选择导入文件 

输入sz 导出的文件名 就导出了     (注意sz 和文件名间的空格)

 

#2查看文件:  ls 查看文件 

     ls -all  查看所有文件(注意ls后的空格 ,可以查看到隐藏文件 还是具体信息) ;

     ls -lh   查看文件 ,包含文件大小信息一KB单位

 //信息说明:   以-开头是文件 以d开头是文件   

例如文件:    -rw-r--r-- 1 root root    0 Jan  8 12:45 ts.txt   

-

rw-  当前自己 可读 可写

r--  代表同组权限

r--  其他用户的权限

(r 读  w写  x执行)  4可读   2可写  1可执行     三个加起7 就是三个权限都有

例如文件夹: drwxr-xr-x 2 root root 4096 Jan  8 12:51 Stu

//提示文件或者文件夹最高权限 chmod 777 需要提升权限的文件或者文件夹

 

#3 打开文件夹: cd 文件夹

    打开文件:   vi文件  或者  vim 文件  (有高亮效果)

    使用cat 文件 直接查看文件

   查看文件属性  file 文件名

   

编辑文件按i  底部显示INSERT  表示可以编辑状态

编辑完 按ESC   关闭编辑状态 shift+: 输入q表示退出不保存,q! 表示强制退出不保存,  wq表示保存退出,wq! 保存强制退出

注意文件改变了没有保存会提示保存,如果想强制退出 q!

使用技巧:输入文件开通两个字母+Tab键 会自动补全

在编辑区底部 输入 :set nu 显示行号   输入:set nonu关闭行号

//当文件内容很多时,如何使文件显示行号 在命令模式(如果编辑模式按Esc 切换到,再i 切换都编辑模式) set number 

//如果想看哪行代码 可以在命令模式 输入25 ,注意不要使用小键盘输入数字25(小键盘 就是键盘最右边数字)

// 如果想查找 某个词可以输入  /需要搜索的词   ;  例如  /content

//命令模式 输入小写 gg 跳到顶部  大写GG跳到底部

//操作上下左右 可以 使用右边的箭头操作

 

#4 下载东西:  wget 下载地址

#5 打开文件夹: cd +文件夹名   ;cd ..返回上级目录   ;   cd 回到根目录

#6 删除文件:rm 文件名   

#7 删除文件夹  rm -r  文件夹名

#8 临时环境配置 (退出控制台就无效):  expor 环境变量

例如:配置   xcport A=123   

           查看配置   echo $A 

           会打印出123

 

#9全局环境配置(控制台退出再进入也有)

进入系统配置环境变量文件    vim  /etc/profile

在打开文件配置环境  xcport B=ASDDF

wq退出编辑文件

生效刚才文件 source /etc/profile 

#10 安装程序

服务器是 乌班图   apt install 安装的程序

服务器是 contOs  yum install 安装的程序

macOs  brew 安装的程序

#11  执行一个文件   ./执行的文件

#12 创建文件vim文件名(包含格式)  例如vim A.txt   

创建文件夹 mkdir  文件夹名

#13解压指令 unzip 解压文件名

#14 查看手机版本手机连接cmd(指令 adb devices)     输入命令行   adb pull  /sysyten/bin/cat cat  

再把cat文件 导入到xshell里面查看

#15 修改文件名 mv 修改文件名  修改后文件名                     例如 mv test1.txt test2.txt

#16 安装解压工具 yum install -y unzip zip

#17寻找文件 find . -name "*.txt"    (双引号就是寻找的文件类型 也可以指定哪个文件)

例如  find . -name "test02.sh"

#18 使用上箭头可以自动显示上次输入的命令  ; 下箭头显示上次后面的命令

#19压缩文件命令 tar czf all.taz *    ( tar czf命令就是固定压缩意思   all.taz是压缩后的文件名和压缩类型    *表示压缩当前所有文件)

#20   ./获取当前目录

 

 

 

 

 

//编译的原理

编译(把人写的代码 变成 机器可识别的指令)

1:预处理阶段 (include 宏 等 打包进来 )

//例如    gcc -E A.c -o A.i   

2:编译阶段  (把预处理阶段代码 封装到一起编译),编译之后(汇编代码)

//例如    gcc -s A.i -o A.s 

3:汇编处理阶段 , 把汇编代码处理成 计算机识别的机器码(例如 0101)

//例如   gcc -c A.s  -o A.o 

4:链接阶段 打出可执行的  (比如桌面一个txt文件  我们点击就会弹出一个框 显示文件)

//例如    gcc -C A.o  -o A

//如果A文件变绿说明成功,A变成可执行文件

 

//可以一步到位 从预编译文件  到可执行文件

gcc A.c -o B

 

 

 

 

//------------------------------------NDK交叉编译 -------------------------------------------------

export ndk_gcc="/root/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc"

//自动找stido.h 头文件库文件   
//--sysroot=是固定写法
// /root/android-ndk-r17c/platforms/android-22/arch-arm (自动寻找头文件 和库文件.s/.so     注意这里的android-22是根据你测试的手机来的)
//-isystem也是固定写法 (注意后面空格)
// /root/android-ndk-r17c/sysroot/usr/include  (寻找指定目录的头文件)
// isystem后面的头文件会覆盖前面的头文件 ,最终到达 使用前的库文件 后面的头文件
export AA="--sysroot=/root/android-ndk-r17c/platforms/android-22/arch-arm -isystem /root/android-ndk-r17c/sysroot/usr/include "


//以上配置还有一个小问题asm无法引入 会报错 报错是C源码内部需要引入asm导致的
export AA="--sysroot=/root/android-ndk-r17c/platforms/android-22/arch-arm -isystem /root/android-ndk-r17c/sysroot/usr/include -isystem /root/android-ndk-r17c/sysroot/usr/include/arm-linux-androideabi"

最后使用 $ndk_gcc $AA -pie main.c -o man

$ndk_gcc $AA -pie main.c -o man这个指令意思分析

$ndk_gcc 表示编译成对应可执行文件的gcc 路径;(比如我想编译成Linux上可以执行文件就可以直接使用Linux自带的gcc编译,就会生成在Linux上能执行的文件,如果我要在安卓手机上就需要使用NDK的gcc,编译成在安卓手机的可执行文件。说白了点就是不同的平台使用不同的gcc)

$AA 表示库文件 头文件的地址

-pie  表示打包什么类型的的文件(例如我们想打包成直接在手机上可执行文件 就是-pie  ;如果我想打包成studio需要的动态库或者静态库就使用-fPIC 。不同的类型文件对应不同命令)

main.c 表示需要打包的文件

-o  表示输出(告诉我是要打包的)

man 表示输出成什么类型文件(文件名 和文件格式)

 

 

-----------------------------------------------NDK 交叉编译动态库和静态库-------------------------------

//先屏配置下全局环境变量,(我的ndk版本是17的,如果配置其他版本的 路径需要修改)

export NDK="/root/android-ndk-r17c"

# 下面是交叉编译相关
export NDK_GCC_x86="/root/android-ndk-r17c/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-gcc"
export NDK_GCC_x64="/root/android-ndk-r17c/toolchains/x86_64-4.9/prebuilt/linux-x86_64/bin/x86_64-linux-android-gcc"
export NDK_GCC_arm="/root/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc"
export NDK_GCC_arm_64="/root/android-ndk-r17c/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc"

export NDK_CFIG_x86="--sysroot=/root/android-ndk-r17c/platforms/android-21/arch-x86 -isystem /root/android-ndk-r17c/sysroot/usr/include -isystem /root/android-ndk-r17c/sysroot/usr/include/i686-linux-android"
export NDK_CFIG_x64="--sysroot=/root/android-ndk-r17c/platforms/android-21/arch-x86_64 -isystem /root/android-ndk-r17c/sysroot/usr/include -isystem /root/android-ndk-r17c/sysroot/usr/include/x86_64-linux-android"
export NDK_CFIG_arm="--sysroot=/root/android-ndk-r17c/platforms/android-21/arch-arm -isystem /root/android-ndk-r17c/sysroot/usr/include -isystem /root/android-ndk-r17c/sysroot/usr/include/arm-linux-androideabi"
export NDK_CFIG_arm_64="--isysroot=/root/android-ndk-r17c/platforms/android-21/arch-arm64 -isystem /root/android-ndk-r17c/sysroot/usr/include -isystem -isystem /root/android-ndk-r17c/sysroot/usr/include/aarch64-linux-android"

export NDK_AR_x86="/root/android-ndk-r17c/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-ar"
export NDK_AR_x64="/root/android-ndk-r17c/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar"
export NDK_AR_arm="/root/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar"
export NDK_AR_arm_64="/root/android-ndk-r17c/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar"

# 静态库 动态库相关
export myd="$NDK_GCC_arm $NDK_CFIG_arm -fPIC -shared "
export myj="$NDK_AR_arm rcs "

 

 

#动态库编译  

打开需要编译成动态库的文件夹里面  输入指令 $NDK_GCC_arm $NDK_CFIG_arm -fPIC -shared get.c -o get.so

 

 

#静态库编译(先打包成 .o文件 再包成.a文件)

//1打包成.o文件

打开需要编译成动态库的文件夹里面  输入指令 $NDK_GCC_arm $NDK_CFIG_arm -fPIC -c get.c -o get.o

//打包成.a文件 (打包成.a文件需要使用NDK里面的  arm-linux-androideabi-ar 文件)

打开需要编译成动态库的文件夹里面  输入指令 $NDK_AR_arm rcs -o libget.a *.o

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值