Xshell 基础命令及其打包静态库和动态库命令

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 这个文件夹


 

发布了11 篇原创文章 · 获赞 4 · 访问量 5217

猜你喜欢

转载自blog.csdn.net/flying0916/article/details/104738935
今日推荐