一、安装rz/sz命令
1.linux系统下安装rz/sz命令
源码安装:
1)通过该指令下载源码:wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz
2)解压该压缩包:tar zxvf lrzsz-0.12.20.tar.gz
3)进入文件夹:cd lrzsz-0.12.20
4)安装:./configure && make && make install
5)进入安装的路径:cd /usr/local/bin
6)ln -s /usr/local/bin/lrz rz 【设置快捷方式 相当于win】
7)ln -s /usr/local/bin/lsz sz 【设置快捷方式 相当于win】
中间遇到的问题汇总(ubuntu):
1)一定要在root权限下进行上述操作,否则在安装的时候需要root权限才能执行。
2)./configure && make && make install 执行的错误
ubuntu要执行这个指令来进行安装:sudo apt install 'g++'
3)继续安装还会出错如图,但给了解决办法。继续安装即可
sudo apt install make
4)没有权限
于是切换成root权限,重新了以上步骤,安装完成。
2.导入到linux系统,导出到win系统的指令
1)sz 文件名:把文件导出到win系统。
2)rz :导入到当前目录。
在win10自带的ubuntu是无法使用这两个命令的,这两个命令是为了方便的往服务器发送和下载东西用的。
如果不是服务器可以直接从下面目录找到linux系统的目录,去进行文件的下载和拉取。
C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home
2. 下载linux的NDK
-
修改成.zip:mv android-ndk-r17c-linux-x86_64.zip?hl=zh_cn android-ndk-r17c-linuxx86_64.zip
-
解压:unzip android-ndk-r17c-linux-x86_64.zip
3.如何查看android设备的cpu架构。
-
adb shell
-
cat /proc/cpuinfo
4.如何编译代码。
1.需要找到NDK里对应平台的GCC工具。/android/toolchains/arm.../.....GCC
2.需要导入相关的库文件。"--sysroot=绝对路径(ndk/platefrom/android-相应版本/arch-arm 到user目录下的pwd)" "--sysroot="的意思是在次路径下自动寻找头文件和库文件。(此时的目录下只有库文件)
3.配置头文件:"ndk/systemroot/user/include"目录下面 在上个路径下继续拼接" -isystem 路径"。(中间有两个空格)"-isystem"只查找头文件
4.确少asm的头文件,还需要在"ndk/systemroot/user/include/arm里找"同步骤三继续拼接。
5.在android中运行会报确少PIE的标记。(pie是可执行程序的标记)
最后的编译代码:
$NDK_GCC -pie $AAA main.c -o mainNDKEXE
5.库的生成
1.linux下的动态库生成。
gcc -fPIC -shared get.c -o libget.so
2.android下动态库生成 交叉编译
$NDK_GCC_arm $NDK_CFIG_arm -fPIC -shared get.c -o libgetndk.so
3.linux下的静态库生成。
1.必须要有目标文件***.o
gcc -fPIC -c get.c -o get.o 【-c 产生目标文件 xxx.o -o 输出get.o】
2.才能生成静态库。
ar rcs -o libget.a get.o 【get.o是静态库需要生成的源文件,并不是 xxx.c】
4.android下静态库生成 交叉编译
1.交叉编译生成***.so
$NDK_GCC_arm $NDK_CFIG_arm -fPIC -c get.c -o getndk.o
2.生成静态库
$NDK_AR_arm rcs -o libgetndk.a getndk.o
6.android导入动态和静态库。
cmake 先进行批量导入
file(GLOB allcpp *.cpp)
1.导入静态库。
1)静态库可以放在cpp文件夹下面。
2)导入静态库
add_library(getndk STATIC IMPORTED)
set_target_properties(getndk PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libgetndk.a)
3)连接静态库
把getndk加入到target_link_librarys()里。
4)声明方法要extern "C"
2.导入动态库。
1)动态库要放在main/jniLibs/armeabi-v7a下。或者自定义路径
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
2)导入动态库:
add_library(getndk SHARE IMPORTED)
set_target_properties(getndk PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/../jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libgetndk.so)
${CMAKE_ANDROID_ARCH_ABI}这个需要在build里配置了cmake才能找到。
3)在代码中load进去
static {
System.loadLibrary("getndk");
}