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 这个文件夹
Xshell 基础命令及其打包静态库和动态库命令相关推荐
- Linux基础——gcc编译、静态库与动态库(共享库)
Linux基础--gcc编译.静态库与动态库(共享库) https://blog.csdn.net/daidaihema/article/details/80902012 Linux基础--gcc编译 ...
- adb: createprocessw failed: 系统找不到指定的路径_gcc编译过程、gcc命令参数、静态库和动态库搜索路径...
一.gcc编译过程 gcc -E hello.c -o hello.s //预处理 gcc -S hello.s -o hello.i //编译 gcc -c hello.i -o hello.o / ...
- msvc命令行编译静态库和动态库
编写一个静态库 编写要打包为静态库的函数,内容如下: // jclib.cpp int func(int a, int b) {return a + b; } 在msvc开发人员命令提示符中执行 cl ...
- 静态库和动态库基于Windows和VScode
VScode配置C/C++环境 静态库和动态库的基本概念 静态库和动态库的创建 静态库和动态库的使用 Makefile写法 一.静态库和动态库的基本概念 静态库和动态库简单理解就是对目标文件的打包操作 ...
- 基础IO(文件接口、安装内核源码超详细步骤图解、静态库与动态库)
基础IO C语言的文件操作接口 fopen fclose fread fwrite fseek 系统调用文件接口 open close read write lseek 安装内核源码 文件描述符&am ...
- iOS架构-cocoapods打包静态库(依赖私有库、开源库、私有库又包含静态库)(14)
前言: iOS工程架构少不了cocoapods 对第三方库的管理,它有着很好的操作性和集中管理的特性.之前的写了不少Xcode 建静态库工程打包.a 和 .framework 的文章,但是我们要先建静 ...
- 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...
- Linux命令【三】gcc编译+静态库+动态库+makefile+gdb调试
用C编译器编译源文件:gcc 源文件 -o 可执行文件名 详细步骤: gcc -E a.c -o a.i预处理器将头文件展开,宏替换,去掉注释 gcc -S a.i -o a.s编译器将C文件变成汇编 ...
- IOS15打包静态库
IOS15打包静态库 环境 xCode13.0 IOS 15 平台 我只用最新的软件. 新建一个静态库, 命名: TestStaticLib 语言我们选中OC 新建一个文件继承NSObject, To ...
最新文章
- 没做领导的时候,觉得领导都是傻X!做了领导之后觉得下属才是傻X!
- java线程 同步与异步 线程池
- 每日一皮:当我在重构时,总是有惊喜出现.......
- spring-cloud-sleuth+zipkin追踪服务实现(一)
- mysql 排序后 下一条记录_什么是MySQL InnoDB 二级索引的排序?|附实例详解
- 并发编程-26 高并发处理手段之服务降级与服务熔断 + 数据库切库分库分表
- python怎么发送邮件_Python面试题之如何用Python来发送邮件?
- C语言封顶,我们的大屋顶|阳光方舟2.0--C-HOUSE正式封顶
- OCR引擎-Tesseract
- 200 行代码解读国产数据库阿里 OceanBase 的速度源头!| CSDN 博文精选
- 编程入门先学什么python-编程零基础应当如何开始学习 Python?
- 自动开票失败可能出现的错误信息
- js高级学习笔记(b站尚硅谷)-1-数据类型
- 驱动人生病毒清除教程
- 信号与系统(十七)—— 傅里叶变换及性质(1)常用函数的傅里叶变换
- 5G云游戏革命风云已起,各方势力谁执牛耳
- android 9.0 c7Pro,透心凉!三星Galaxy C7 Pro上线,还内置热管
- python找最长的单词_318. 最长单词长度乘积(Python)
- 智能语音助手调研【简单可行方案及开源代码】
- MSC Marc英文界面汉化
热门文章
- cuda8.0 出错:/usr/bin/ld: 找不到 -lGL【转】
- CMD 禁用 笔记本自带的键盘
- SQL AlawaysOn 之四:故障转移集群
- [视觉Slam十四讲(2)踩坑记录]第3讲:Fatal error :Eigen/core没有那个文件或目录
- 增量式与绝对值编码器的区别
- DevOps元素周期表——1号元素 Gitlab
- char *p = hello world!
- 有没有测试适合哪种发型的颜色软件,染发小测试 看看你的头发适合哪种颜色...
- 选拨管理者的一个必要条件
- PHP开发api接口安全验证