在Windows上搭建开发和编译环境,可以使用虚拟机软件或者安装WSL。
安装虚拟机
- 安装虚拟机软件VirtualBox。
- 安装Linux虚拟机。
安装WSL
适用于Linux的Windows子系统(WSL)可让开发人员直接在Windows上按原样运行GNU/Linux环境(包括大多数命令行工具、实用工具和应用程序),且不会产生传统虚拟机或双启动设置开销。安装Windows Subsystem for Linux(WSL):在管理员模式下打开PowerShell输入wsl --install;然后重启计算机。此命令将启用运行WSL并安装Linux的Ubuntu发行版所需的功能。或者打开Microsoft Store,安装Linux发行版。要在安装新的Linux发行版时将默认版本设置为WSL 1或WSL 2,请使用命令 wsl --set-default-version <Version#>,将<Version#>替换为1或2。然后设置WSL开发环境。
终端登录虚拟机配置
- 网络配置
确保虚拟机和宿主机之间的通信:将虚拟的网络设置为桥接模式(也可以配置为NAT模式需要做端口映射)。Ubuntu 18.04及以上版本,不再使用interfaces文件配置,而使用netplan。编辑netplan的配置文件/etc/netplan/01-network-manager-all.yaml:
network:
version: 2
renderer: networkd # 或者 'NetworkManager',取决于您使用的后台渲染器
ethernets:
enp0s3:
dhcp4: true
dhcp6: no
addresses:
- 192.168.121.188/23
- 10.0.0.100/24
gateway4: 192.168.120.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
应用新的网络配置sudo netplan apply。(常用将网络设置为:Host-Only模式下虚拟机和主机可以互相通信,但默认情况下无法访问外部网络,通常位于192.168.56.0/24网络内 + NAT模式下虚拟机通过主机(物理计算机)连接到外部网络,通常位于10.0.3.0/24网络内)
- 安装和开启SSH服务
sudo apt install openssh-server
sudo systemctl status ssh
sudo systemctl start ssh
sudo systemctl enable ssh
OpenSSH默认支持SFTP(Secure File Transfer Protocol)和SCP(Secure Copy Protocol)/RSYNC(Remote Sync),这意味着只要你已经在Linux服务器上安装并启用了SSH服务,那么sftp服务和scp也是可用的。推荐使用MobaXterm作为SSH客户端。
GitLab用户配置
- Git配置
git config --global user.name "xxx"
git config --global user.email xxx@gmail.com
git config --list
- GitLab add SSH Keys
ssh-keygen -t ed25519 -C "xxx"
cat ~/.ssh/id_ed25519.pub | clip # Git Bash on Windows
xclip -sel clip < ~/.ssh/id_ed25519.pub # Linux
- GitLab add GPG Keys
gpg --gen-key
gpg --list-secret-keys --keyid-format LONG <EMAIL> # list your private GPG key
gpg --armor --export <ID> # To show the associated public key
Samba配置
- 安装Samba
sudo apt install samba
- 更改共享目录的所有者和权限
sudo chown -R nobody:nogroup /path/shared/folder
sudo chmod -R 0775 /path/shared/folder
- 编辑Samba的配置文件
/etc/samba/smb.conf
[sharefolder]
comment = Ubuntu Share
path = /path/shared/folder
browseable = yes
read only = no
guest ok = no
create mask = 0775
directory mask = 0775
valid users = yourusername
- 创建Samba用户
sudo smbpasswd -a yourusername
- 重启Samba服务
sudo systemctl restart smbd
\\ubuntu-server-ip\sharedfolder
FTP配置
- 安装vsftpd
sudo apt install vsftpd
- 更改共享目录的所有者和权限
sudo chown -R nobody:nogroup /path/shared/folder
sudo chmod -R 0775 /path/shared/folder
- 编辑Samba的配置文件
/etc/vsftpd.conf
write_enable=YES
- 重启FTP服务
sudo systemctl restart vsftpd
编译工具链配置
GCC交叉编译工具链
- 下载安装GCC交叉编译工具链。(Arm GNU Toolchain)
- 配置交叉编译环境和编译选项。(在
~/.profile脚本配置环境变量ARCH、PATH、CROSS_COMPILE等) - 安装cmake和make。(
sudo apt-get install build-essential gdbinstall the GNU compiler tools and the GDB debugger)
NDK(Native Development Kit)交叉编译工具链
使用 NDK 编译代码主要有三种方法:基于Make的ndk-build、CMake、独立工具链,用于与其他构建系统集成,或与基于configure的项目搭配使用。 Android NDK支持使用CMake编译应用的C和C++代码。本页介绍了如何通过Android Gradle插件的ExternalNativeBuild或通过直接调用CMake将CMake与NDK搭配使用。
- CMake工具链文件
NDK通过工具链文件支持CMake。工具链文件是用于自定义交叉编译工具链行为的CMake文件。用于NDK的工具链文件位于NDK中以下位置:<NDK>/build/cmake/android.toolchain.cmake。
- 用法
使用CMake进行构建时,工具链文件本身及其参数必须传递给CMake。
$ cmake \
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=$ABI \
-DANDROID_PLATFORM=android-$MINSDKVERSION \
$OTHER_ARGS
- 工具链参数
如果通过命令行进行构建,请使用-D将参数传递给CMake。以下参数可以传递给CMake工具链文件。
- CMAKE_BUILD_TYPE:指定构建类型。
- CMAKE_TOOLCHAIN_FILE:指定CMake工具链文件,用于Android平台的交叉编译。
- ANDROID_TOOLCHAIN:
-DANDROID_TOOLCHAIN=clang指定使用Clang作为编译器。 - ANDROID_ABI:ABI(Application Binary Interface)指定了目标CPU架构和指令集。
- ANDROID_NDK:指定Android NDK的路径。
- ANDROID_NATIVE_API_LEVEL:ANDROID_PLATFORM的别名。指定应用或库所支持的最低API级别。此值对应于应用的minSdkVersion。当直接调用CMake时,此值默认为所使用的NDK支持的最低API级别。
- CMAKE_MAKE_PROGRAM:指定构建系统的路径,这里使用Ninja。
- CMAKE_GENERATOR:
-DCMAKE_GENERATOR="Ninja"或-GNinja指定使用Ninja作为生成器。
- 一个例子
Executable : ${HOME}/Android/Sdk/cmake/3.10.2.4988404/bin/cmake
arguments :
-H${HOME}/Dev/github-projects/googlesamples/ndk-samples/hello-jni/app/src/main/cpp
-DCMAKE_FIND_ROOT_PATH=${HOME}/Dev/github-projects/googlesamples/ndk-samples/hello-jni/app/.cxx/cmake/universalDebug/prefab/armeabi-v7a/prefab
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_TOOLCHAIN_FILE=${HOME}/Android/Sdk/ndk/22.1.7171670/build/cmake/android.toolchain.cmake
-DANDROID_ABI=armeabi-v7a
-DANDROID_NDK=${HOME}/Android/Sdk/ndk/22.1.7171670
-DANDROID_PLATFORM=android-23
-DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a
-DCMAKE_ANDROID_NDK=${HOME}/Android/Sdk/ndk/22.1.7171670
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${HOME}/Dev/github-projects/googlesamples/ndk-samples/hello-jni/app/build/intermediates/cmake/universalDebug/obj/armeabi-v7a
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${HOME}/Dev/github-projects/googlesamples/ndk-samples/hello-jni/app/build/intermediates/cmake/universalDebug/obj/armeabi-v7a
-DCMAKE_MAKE_PROGRAM=${HOME}/Android/Sdk/cmake/3.10.2.4988404/bin/ninja
-DCMAKE_SYSTEM_NAME=Android
-DCMAKE_SYSTEM_VERSION=23
-B${HOME}/Dev/github-projects/googlesamples/ndk-samples/hello-jni/app/.cxx/cmake/universalDebug/armeabi-v7a
-GNinja
jvmArgs :
Build command args: []
Version: 1
开发工具vscode配置
- 安装插件
在左侧的Extensions中安装C/C++ Extension Pack、CMake等插件。(CodeGeeX、Lingma)
- 安装C/C++编译
Windows用户通常会选择MinGW-w64或者Microsoft Visual C++ (MSVC);Linux用户通常默认已安装gcc/g++编译器。
- 配置环境变量
确保编译器路径(如g++)已添加到系统环境变量中。
- vscode设置
vscode提供了不同的设置范围:用户设置(./User/settings.json)和工作区设置(.vscode文件夹)。在用户设置中配置全局设置,在当前工作区设置中配置当前工作区设置。你可以在当前工作区的.vscode文件夹中创建一些配置文件:settings.json、tasks.json (编译器构建设置) 、launch.json(调试器设置)、c_cpp_properties.json(编译器路径和智能感知设置)。重用配置只需要将JSON格式的配置文件复制到新项目的.vscode文件夹中。
- 在本地开发或者登录Remote Host开发。