#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 修改文件名
#16 安装解压工具 yum install -y unzip zip
#17寻找文件 find . -name "*.txt"
例如  find . -name "test02.sh"
#18 使用上箭头可以自动显示上次输入的命令  ; 下箭头显示上次后面的命令
#19压缩文件命令 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 "
   
#动态库编译  
打开需要编译成动态库的文件夹里面
 
 
#静态库编译(先打包成 .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