Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)

文章大纲

  • 引言
  • 一、安装VMware 虚拟机并安装Linux系统
    • 1、安装VMware 虚拟机
    • 2、安装Linux系统
    • 3、apt 命令安装时可能出现的一个错误
  • 二、安装Vmware Tools
  • 三、通过samba配置Windows共享文件夹
  • 四、安装SSH
  • 五、配置Linux NDK交叉编译环境
    • 1、安装gcc、g++ 编译器
    • 2、配置环境变量
    • 3、配置NDK环境

引言

虽然windows上也可以进行交叉编译,但是有很多库在Linux编译会简单很多,而且也更快一些,当然Mac上也可以编译,不过这篇是总结从0开始虚拟机上配置Linux的交叉编译环境,这会是一个系列的文章,所谓必知必会是NDK开发者所应该知道一些知识,此系列文章基链接:

  • Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)
  • Android NDK——必知必会之JNI和NDK基础全面详解(二)
  • Android NDK——必知必会之JNI的C++操作函数详解和小结(三)
  • Android NDK——必知必会之从Java 传递各种数据到C/C++进行处理全面详解(四)
  • Android NDK——必知必会之C/C++传递各种类型数据到Java进行处理及互相调用详解(五)
  • Android NDK——必知必会之Native线程操作及线程同步全面详解(六)
  • Android NDK——必知必会之Makefile和CMake基本使用语法概述(七)

一、安装VMware 虚拟机并安装Linux系统

1、安装VMware 虚拟机

首先到官网下载VMware 虚拟机。

2、安装Linux系统

首先到Ubuntu官网下载Linux系统ubuntu-18.04.1-desktop-amd64.iso镜像文件,然后打开VMware——>创建新的虚拟机——>自定义(高级)——>默认点击下一步
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第1张图片
根据自己的系统选择将要正确的版本,我机子是64位的而且将要安装Ubuntu
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第2张图片
然后下一步定义虚拟机的名称和保存位置——>处理器配置——>虚拟机内存(处理器配置和内存都可以先默认,以后根据实际情况自行修改)——>网络类型选择使用网络地址转换NAT模式——>SCSI选择推荐选项——>虚拟磁盘类型选择推荐选项——>选择磁盘
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第3张图片
分配磁盘大小并选择将虚拟磁盘存储为单个文件——>下一步——>指定vmdk存储的位置
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第4张图片
点击完成,然后装载下载好的Ubuntu镜像ISO文件,点击完成。

Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第5张图片
然后开启此虚拟机,然后等待片刻会自动进入到Ubuntu系统安装界面(若没有进入就继续等待或者重新挂载)
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第6张图片
点击安装Ubuntu——>继续——>现在安装——>
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第7张图片
选择键盘布局
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第8张图片
设置用户名密码就开始自动安装了,等待…然后重启,切回
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第9张图片

3、apt 命令安装时可能出现的一个错误

E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it? 

解决方案,依次执行终端命令

sudo rm /var/lib/apt/lists/lock

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

二、安装Vmware Tools

启动系统之后,在菜单栏虚拟机——>安装VMware Tools然后系统会自动下载安装包并加载到CD驱动器中,使用终端打开,第一次使用root用户的话得通过sudo passwd root 设置root用户的密码,只有拥有root权限才可以使用解压命令
tar xvf VMwareTools-10.2.5-8068393.tar.gz -C /usr/local/ 解压到/usr/local目录下(任何目录都可)
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第10张图片
解压完毕之后再进入到解压目录下执行vm-ware install.pl脚本,然后一路回车进行安装即可,安装成功之后你需要从CD驱动器中弹出,并且在菜单栏虚拟机下会看到重新安装VMware Tools。
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第11张图片

三、通过samba配置Windows共享文件夹

在安装samba前为了便于操作,可能还需要安装些其他软件,比如说vim、net-tools等,在Linux下安装软件很简单直接使用sudo apt-get install samba
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第12张图片
安装samba之后,需要进行一些配置工作,通过命令vim /etc/samba/smb.conf 使用vim 编辑smb.conf配置文件,白色覆盖区域[share]部分即所谓的共享节点(这个名词我不确定是否规范,是我自己的理解的)为需要手动添加配置信息并保存。

[share]
   comment = share with windows
   browseable = yes
   writable = yes
   valid users = cmo
   path = /home/cmo
   guest ok = no

Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第13张图片
保存完毕之后,还需要给samba使用 smbpasswd -a cmo添加用户(cmo即为我Linux的用户名,要确保用户拥有Linux下对应path的权限,然后在Windows上通过该用户登录,当然也可以添加多个共享节点来实现多用户多目录共享,但同一个共享路径,同一时间只能通过一个用户登录共享)
这里写图片描述

,再通过service smbd restart重启samba服务,至此Linux 所有配置共享工作已经全部完成,只需要在Windows下添加上对应的网络磁盘地址即可,在我的电脑上右键——>映射网络驱动器
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第14张图片
使用ifconfig 查看网络地址信息,然后inet内网地址就是我们将在windows映射的
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第15张图片
点击完成,最终共享的所有工作完成。
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第16张图片

四、安装SSH

很多软件都是需要SSH协议来进行远程访问的,比如WinSCP、XShell等,而Ubuntu默认是没有安装的,所以需要通过 apt-get install ssh 安装SSH,另外可以通过netstat -anptu命令查看端口号

五、配置Linux NDK交叉编译环境

gcc全称GNU C编译器,原本只能处理C语言,但很快扩展也可以支持变得可处理C++。(GNU计划的目标是创建一套完全自由的操作系统);g++全称GNU c++编译器,虽然gcc和g++都能够编译c/c++,但是编译时候行为不同:对于后缀为**.c的源文件,gcc把它当作是C程序而g++当作C++程序**;后缀为**.cpp的两者都会认为是c++程序**。而且g++会自动链接c++标准库stl,gcc不会,gcc也不会定义__cplusplus宏,而g++会。另外clang也是一个编译器,与gcc对比,它具有编译速度更快、编译产出更小等优点,但是某些软件在使用clang编译时候因为源码中内容的问题会出现错误。

1、安装gcc、g++ 编译器

gcc、g++编译器简而言之就是用于把出C/C++ 源文件编译成可以执行的文件,安装也很简单只要分别执行命令apt-get install gccapt-get install g++(当然也可以使用apt install build-essential 命令一并安装gcc、g++与make)即可,安装完毕之后就可以使用编译器编译C/C++ 源文件了,而用于编译NDK的话,通常是使用NDK 中对应的gcc/g++ 编译器

2、配置环境变量

和Windows不同,Linux环境变量配置需要使用 export 声明。

 export PATH=${PATH}:java/bin:android/platform-tools

比如首先定义一个全局的环境变量NDK和在"$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin"目录中包含了arm-linux-androideabi-gcc、arm-linux-androideabi-g++等交叉编译工具,不过交叉编译工具的路径根据NDK版本和编译工具版本的不同会有所变化。

export NDK=<NDK目录>
export PATH=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin
....

如果直接在终端中输入命令,则设置PATH环境变量的值,但其作用范围仅限于当前会话即临时环境变量,使用$来引用环境变量。在Linux中配置环境变量,也可以直接修改以下文件profile或者bashrc或者bash_profile (其中**/etc/ 是系统全局环境变量设定,~/是用户私有环境变量设定**)以修改/etc/profile文件为例:

  • 切换到etc目录并打开/etc/profile文件
    在这里插入图片描述

  • /etc/profile文件中使用export 定义全局环境变量并赋值
    Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第17张图片

  • 保存/etc/profile文件并使用source profile命令刷新,配置成功之后即可以在任何地方通过$ 引用环境变量
    在这里插入图片描述

3、配置NDK环境

使用命令wget https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip下载最新稳定版ndk-r16b
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第18张图片
下载完成之后使用解压命令unzip android-ndk-r16b-linux-x86_64.zip进行解压
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第19张图片
原则上解压完毕之后就可以在Linux上使用NDK进行开发了,NDK 目录结构概图如下:
Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)_第20张图片

未完待续……

你可能感兴趣的:(Android,NDK,Android,NDK特战纪)