open ------- 打开链接服务器
clear------------清屏
ls ----------查看文件目录
ls -all --------查看所有的文件目录
rm -rf name -------删除文件
rm -rf ./ -------删除全部
wget 网址 --------- 下载别的东西到服务器
rz ---------- 上传本地文件到服务器
sz ----------从服务器下载到本地
mkdir -----------创建文件夹
cd -------------切换路径
export feixiang=11111 --------- 定义临时环境变量
echo $feixiang ----------使用临时环境变量
vim /etc ------系统指定目录
vim /etc/profile ------- 在这里面配置全局环境变量
source /etc/profile -------- 刷新环境变量生效的
填写报错的话 可以 :set noreadonly
tar xvf ------------------- 解压 ffmpeng
=======权限的问题=================
4 可读 2 可写 1 可执行
chmod 777 name 赋予最高权限
vim test.txt ---- 创建文件
-rw-r--r-- 1 root root 44 Mar 4 13:57 test.txt
-rwxrwxrwx 1 root root 44 Mar 4 13:57 test.txt 执行了chmod 777 命令后
drwxr-xr-x 2 root root 4096 Mar 4 13:59 stu
- 代表文件
d 代表文件夹
rw- 当前自身所在用户的权限
r-- 代表同组的权限
r-- 代表其他用户的权限
r 代表可以读
w 代表可以写
x 代表可以执行
chmod +x 给三组都分配了 可执行权限
chmod u =r 单独给当前用户一个读的权限
chmod u=r,g=r,o=r 给三组分配可读的权限
vim命令的使用
vim test02.txt -----创建一个文件 默认是命令模式
cat test02.txt 查看文件信息
i 进入编辑模式
a 追加的意思也能进入编辑模式
esc 返回到命令模式
:w 就是保存的意思
:wq 保存并退出
:q! 强制退出
:set number 显示行号
:行号 就能直接定位到行号
/ 就可以搜索相关内容
命令模式下面
G :跳转到最下面
gg : 跳转到最上面
k :上一行
j:下一行
h:左边
l:右边
注意点:
1, 不小心按到ctrl+s 会出现无反应的现象 像死机一样 直接关掉就行了
2, 不要使用小键盘否则会出现奇怪的操作符
========= C 编译原理
编译(就是把人写的代码转换成机器可以认识的指令) LINUX(gcc) MAC(Clang)
1 预处理阶段(include 宏 ...)
gcc -E V.c - o A.i
2 编译阶段,编译之后 形成汇编代码
gcc -S A.i - o A.s
3 汇编处理阶段 把汇编代码处理成计算机可识别的机器码
gcc -c A.s -o A.o
o
4 链接阶段,打出可以执行的
gcc -C A.o -o A
./A
一条命令代替上面4个命令 gcc -C B.c -o B
如果gcc命令不存在 就运行 yum install gcc
file 文件名 ------可以看出文件是否可执行
./ 文件名 ---- 执行可执行文件
mv 文件现在的名字 文件修改后的名字
unzip 文件名 ------- 解压文件
=====================================
使用NDK 编译文件的流程
看自己手机的架构 大多数是 arm
进入到ndk 目录
cd toolchains/
cd arm-linux-androideabi-4.9/
cd prebuilt/
cd linux-x86_64/
cd bin/
pwd ---------显示当前的路径
到了bin目录就能看到 NDK 的gcc命令
环境变量作用就来了
export NDK_GCC="/root/studydir/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc"
// --sysroot=路径 自动寻找头文件和库文件
//-isystem 路径 寻找指定的头文件
// 如果同时设置--sysroot=路径 和-isystem 路径 ,-isystem 路径 里面的头文件会覆盖前面的头文件
// 最终效果是 使用--sysroot的库文件 使用-isystem头文件
export STDIO="--sysroot=/root/studydir/android-ndk-r17c/platforms/android-27/arch-arm -isystem /root/studydir/android-ndk-r17c/sysroot/usr/include -isystem /root/studydir/android-ndk-r17c/sysroot/usr/include/arm-linux-androideabi" // -isystem后面必须有一个英文的空格
=========adb 命令==========
adb push ./main_ndk_exe /sdcard/ 把文件放到手机sd卡下面
adb root
adb remount
======普通打包静态库=========
ar rcs -o libadd.a *.o ---------------------------- 打包静态库 .a文件
gcc main.c -o main -L . -ladd
=========交叉编译=============可以运行在Android里面的
export NDK_AR="/root/studydir/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar"
$NDK_AR rcs -o libadd.a *.o ---------------------------- 打包静态库 .a文件
======================动态库 和 静态库 ======================================================
静态库:
libxxxxx.a(静态库包裹了很多.o文件) .o 文件是二进制文件
编译器: 编译期的时候,把静态库完整copy一份去执行的
举例: 有一百个地方需要执行静态库 如果需求改变了 静态库被修改 那么100个地方
都要修改重新编译
使用场景 : 如果不想对外开放我们的库 就使用静态库
动态库:
libxxxx.so
运行的时候才回去加载,而且只加载一次 当加载一次之后 在内存中会存在副本 如果
在100个地方使用都是公用的
使用场景: 百度地图 高德地图 第三方api 全部都是动态库 (对外开放)
编译动态库和静态库:
ndk 编译动态库
$NDKGCC $STDIO -fPIC -shared get.c -o libget.so
ndk 编译静态库
静态库编译必须使用 ndk 下面的arm-linux-androideabi-ar
$NDKGCC $STDIO -fPIC -c A.c -o A.o----- 先打包成.o文件
$NDK_AR rcs -o libadd.a *.o ---------------------------- 打包静态库 .a文件 *代表所有的.o文件 也可以指定某一个文件
----------本人自己xshell 配置的全局环境变量----------------------------------------------------
export NDKGCC="/root/studydir/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc"
export STDIO="--sysroot=/root/studydir/android-ndk-r17c/platforms/android-27/arch-arm -isystem /root/studydir/android-ndk-r17c/sysroot/usr/include -isystem /root/studydir/android-ndk-r17c/sysroot/usr/include/arm-linux-androideabi"
export NDK_AR="/root/studydir/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar"
tar -zcvf
tar -cf all.tar armeabi-v7a2 压缩armeabi-v7a2 这个文件夹