1.安装sz和rz

root 账号登陆后,依次执行以下命令:
wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz
tar zxvf lrzsz-0.12.20.tar.gz
cd lrzsz-0.12.20
./configure && make && make install

上面安装过程默认把lsz和lrz安装到了/usr/local/bin/目录下,现在我们并不能直接使用, 下面创建软链接,并命名为rz/sz:
cd /usr/local/bin 【安装到这里来】
ln -s /usr/local/bin/lrz rz 【设置快捷方式 相当于win】
ln -s /usr/local/bin/lsz sz 【设置快捷方式 相当于win】

2.下载NDK

//下载
wget https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip? hl=zh_cn

//改名字
mv android-ndk-r17c-linux-x86_64.zip?hl=zh_cn android-ndk-r17c-linux- x86_64.zip

// 解压
unzip android-ndk-r17c-linux- x86_64.zip

3.交叉编译

1
2
3
4
5
6
7
8
# gcc
export NDK_GCC="/home/jackou/tools/android-ndk-r17c/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc"

# --sysroot=路径(自动寻找 头文件,库文件.h/.a/.so)
# -isystem 路径(自动寻找 头文件)
export GCC_PATH="--sysroot=/home/jackou/tools/android-ndk-r17c/platforms/android-21/arch-arm64 -isystem /home/jackou/tools/android-ndk-r17c/sysroot/usr/include -isystem /home/jackou/tools/android-ndk-r17c/sysroot/usr/include/aarch64-linux-android"

$NDK_GCC -pie $GCC_PATH main.c -o mainexe

4.配置环境变量

1
2
3
4
5
6
7
8
9
#vim /etc/profile

export NDK="/home/jackou/tools/android-ndk-r17c"

export PATH=$NDK:$PATH

export NDK_GCC_arm_64="$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc"

export NCK_CFIG_arm_64="--sysroot=$NDK/platforms/android-21/arch-arm64 -isystem $NDK/sysroot/usr/include -isystem $NDK/sysroot/usr/include/aarch64-linux-android"

5.编译动态库

1
2
3
// get.h 头文件
#include<studio.h>
int get();
1
2
3
4
5
// get.c
#include "get.h"
int get(){
return 666;
}
1
2
#编译
$NDK_GCC_arm_64 $NCK_CFIG_arm_64 -fPIC -shared get.c -o libgetndk.so

6.编译静态库

1
2
#配置环境
export NDK_AR_arm_64="$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux- x86_64/bin/aarch64-linux-android-ar"
1
2
# 生成目标文件
$NDK_GCC_arm_64 $NCK_CFIG_arm_64 -fPIC -c get.c -o getndk.o
1
2
# 生成静态库
$NDK_AR_arm_64 rcs -o libgetndk.a getndk.o

7.AS引入库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
cmake_minimum_required(VERSION 3.4.1)

# 批量导入
file(GLOB allCPP *.cpp)
add_library(
native-lib
SHARED
${allCPP}
)

find_library(
log-lib
log
)

# 导入静态库
add_library(getndk STATIC IMPORTED)
# 真正导入 静态库
set_target_properties(getndk PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/libgetndk.a)

# 导入动态库
add_library(getndk SHARED IMPORTED)
set_target_properties(getndk PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/../jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libgetndk.so)

# set(CMAKE_CXX_FLAGS )

target_link_libraries(
native-lib
${log-lib}
getndk # 链接此静态库到总库 libnative-lib.so
)