LINUX 命令以及交叉编译

2020-06-01  本文已影响0人  星云春风
-rw-r--r-- 1 root root    6 Jun  1 22:55 test.txt
- 文件
d 代表文件夹 目录
- 
rw- 1.当前自身所在用户的权限
r-- 2.代表同组的权限
r-- 3.其他用户的权限

r 可以读
w 可以写
x 可执行


chmod 777 test.txt  最高权限的配置
-rwxrwxrwx 1 root root    6 Jun  1 22:55 test.txt

chmod 477 test.txt

4 可读 2 可写 1可执行

chmod 111 test.txt

chmod +x test.txt 给三组都分配了,可执行权限

chmod u=r test.txt 当前所在用户 给一个 读的权限

chmod u=r,g=r,o=r test.txt 给三组都分配了读的权限
一进入VIM编辑器的是,默认是命令模式
i 编辑的意思
a 追加的意思
:w 就是保存的意思
:q 退出的意思
:q! 强制退出,不管有没有保存
:set number 显示行号
:100 回到100行(不能使用小键盘,回到指定的行数)


命令模式下:
    1.gg:跳转到最上面
    2.G:跳转到最下面
    3.k:上一行
    4.j:下一行
    5.h:左边,  l:右边

注意点:1.不小心按到 Ctrl + S / Ctrl + 其他  会出现 死机的现象
2.不要操作小键盘
编译(把人写的代码,变成,机器可以认识的指令) Linux(gcc),Mac(Clang)
1.预处理阶段(include,宏 ....)
    gcc -E Test.c -o Test.i

2.编译阶段,编译之后(汇编代码)
    gcc -S Test.i -o Test.s

3.汇编处理阶段,把汇编代码处理成计算机认识的01010101机器码
    gcc -c Test.s -o Test.o

4.链接阶段,打出可以执行的包
    gcc -C Test.o -o Test  得到可执行的程序Test
      执行程序Test
    ./Test

一条命令执行上面四个步骤: gcc Test.c -o Test
# 手机一般都是ARM的 ,模拟器是x86 或者x86_64的,这里是以手机为主的,选择toolchains下的arm
export NDK_GCC_arm_64="/root/xiachenhui/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc"
# --sysroot=路径(自动寻找头文件和库文件 .h/.so) 
#  -isystem 寻找指定目录的头文件)后面需要一个空格
#  如果同时设置--sysroot=路径 和 -isystem ,会用-isystem 的头文件覆盖--sysroot=的头文件,
#最终是使用--sysroot=的库文件, -isystem的头文件
# 以上配置,asm会无法引入,报错的原因是:C源码内部需要引入asm ,所以引入了第二个-isystem
export NDK_CFIG_arm_64="--sysroot=/root/xiachenhui/android-ndk-r17c/platforms/android-23/arch-arm -isystem /root/xiachenhui/android-ndk-r17c/sysroot/usr/include -isystem /root/xiachenhui/android-ndk-r17c/sysroot/usr/include/arm-linux-androideabi"
# $NDK_GCC_arm_64 $NDK_CFIG_arm_64 -pie Test.c -o main_exe 生成可执行文件


#模拟器的配置
export NDK_GCC_x86="/root/xiachenhui/android-ndk-r17c/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-gcc"
export NDK_CFIG_x86="--sysroot=/root/xiachenhui/android-ndk-r17c/platforms/android-23/arch-x86 -isystem /root/xiachenhui/android-ndk-r17c/sysroot/usr/include -isystem /root/xiachenhui/android-ndk-r17c/sysroot/usr/include/i686-linux-android"
 //闭包 指导编译方式的编译区域(armeabi-v7a , x86)
        externalNativeBuild {
            ndkBuild {
                abiFilters "armeabi-v7a"
                //这个可以不要,现在几乎没有x86的手机了。
                abiFilters "x86"
            }
           /* cmake {

            }*/
        }
 //指定打包的CPU架构模式
        ndk{
            abiFilters "armeabi-v7a"
            abiFilters "x86"
        }

2 android里面添加

  //指定脚本路径 ,自己添加Android.mk文件
    externalNativeBuild {
            ndkBuild {
                path 'src/Android.mk'
            }
    }
export NDK="/root/xiachenhui/android-ndk-r17c"
# 交叉编译
export NDK_GCC_x86="/root/xiachenhui/android-ndk-r17c/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-gcc"
export NDK_GCC_x64="/root/xiachenhui/android-ndk-r17c/toolchains/x86_64-4.9/prebuilt/linux-x86_64/bin/x86_64-linux-android-gcc"
export NDK_GCC_arm="/root/xiachenhui/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc"
export NDK_GCC_arm_64="/root/xiachenhui/android-ndk-r17c/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc"


export NDK_CFIG_x86="--sysroot=/root/xiachenhui/android-ndk-r17c/platforms/android-23/arch-x86 -isystem /root/xiachenhui/android-ndk-r17c/sysroot/usr/include -isystem /root/xiachenhui/android-ndk-r17c/sysroot/usr/include/i686-linux-android"
export NDK_CFIG_x64="--sysroot=/root/xiachenhui/android-ndk-r17c/platforms/android-23/arch-x86_64 -isystem /root/xiachenhui/android-ndk-r17c/sysroot/usr/include -isystem /root/xiachenhui/android-ndk-r17c/sysroot/usr/include/x86_64-linux-android"
export NDK_CFIG_arm="--sysroot=/root/xiachenhui/android-ndk-r17c/platforms/android-23/arch-arm -isystem /root/xiachenhui/android-ndk-r17c/sysroot/usr/include -isystem /root/xiachenhui/android-ndk-r17c/sysroot/usr/include/arm-linux-androideabi"
export NDK_CFIG_arm_64="--sysroot=/root/xiachenhui/android-ndk-r17c/platforms/android-23/arch-arm64 -isystem /root/xiachenhui/android-ndk-r17c/sysroot/usr/include -isystem /root/xiachenhui/android-ndk-r17c/sysroot/usr/include/aarch64-linux-android"


export NDK_AR_x86="/root/xiachenhui/android-ndk-r17c/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-ar"
export NDK_AR_x64="/root/xiachenhui/android-ndk-r17c/toolchains/x86_64-4.9/prebuilt/linux-x86_64/bin/x86_64-linux-android-ar"
export NDK_AR_arm="/root/xiachenhui/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar"
export NDK_AR_arm_64="root/xiachenhui/android-ndk-r17c/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar"

- 交叉编译动态库
`
$NDK_GCC_x86 $NDK_CFIG_x86 -fPIC -shared add.c -o libadd.so
`



上一篇下一篇

猜你喜欢

热点阅读