VirtualBox 下搭建Ubuntu18.04开发环境

2 篇文章 0 订阅

虚拟机使用 Oracle VirtualBox,操作系统使用 Ubuntu18.04,集成开发环境使用 VSCode,构建系统使用 cmake,编译器使用 llvm/clang 6.0,调试器使用 lldb。下面记录了大部分问题和解决步骤:

  1. 安装 Ubuntu 18.04:
    1. 安装虚拟机:Oracle VirtualBox,这是一款免费软件。下载地址 https://www.virtualbox.org/wiki/Downloads
    2. 使用 Ubuntu 18.04 iso 光盘映像安装 Ubuntu18.04,下载地址 http://releases.ubuntu.com/18.04/
      1. VirtualBox 创建虚拟操作系统时最好是用动态磁盘,而且容量要大。
      2. 如果虚拟磁盘容量不够了,可以关闭Linux,然后在设置/存储内新增一个控制器(AHCI),创建一个新磁盘,然后启动Linux 执行下列步骤
        1. 磁盘分区和格式化
          1. sudo fdisk -lu # 列出所有设备,一般是 /dev/sdb 一类名字
          2. sudo fdisk /dev/sdb # 新磁盘分区
            1. 输入 m(menu)<CR> -> n(add a new partition)<CR> -> p(primary)<CR> -> <CR> -> <CR> -> w(write table to disk and exit)<CR>
          3. sudo mkfs.ext4 /dev/sdb
            1. 输入 y<CR>
        2. 挂载新磁盘
          1. sudo umount /dev/sdb # 先取消挂载,此命令可以不执行
          2. sudo mkdir -p /home/nsw/devel # 创建挂载目的目录
          3. sudo gedit /etc/fstab # 编辑挂载点配置文件
            1. 增加一行 /dev/sdb /home/nsw/devel ext4 relatime 0 2
            2. 保存退出
          4. sudo mount -a # 让配置起效
        3. 将原磁盘内的源码复制到新磁盘内
          1. cd /home/nsw
          2. cp -r /home/nsw/src/* /home/nsw/devel/ #先拷贝出来
          3. rm -rf /home/nsw/src # 删除源文件
        4. 改变挂载点
          1. 编辑挂载点配置文件,最后一行挂载位置改为 /home/nsw/src,保存
          2. 执行 sudo mount -a
        5. 解决覆盖文件时的提示 Operation not permitted
          1. 不能用 sudo chmod -R 777 /home/nsw/src # 递归更改权限,这一行没什么用,现在 /home/nsw/src 的所有者是 root:root
          2. sudo chmod -c --reference=/home/nsw /home/nsw/src # 更改目录所有者为已有目录 /home/nsw 的所有者
    3. 虚拟机OS和宿主OS之间的数据交换方式:
      1. 采用剪贴板和拖放支持
        1. 选择VM窗口的菜单:
        2. 设备→安装增强功能
        3. 设备->共享剪贴板 双向(测试发现实际不可用)
        4. 设备->拖放 双向(可用)
        5. 重启 Ubuntu
      2. 使用 http server(Python3.x)
        1. 在 shell 内切换到要共享的目录
        2. python3 -m http.server 8088
    4. 更改分辨率
      1. 运行 Settings,选择 Devices-> Resolution,选择一个大些的分辨率后,屏幕显示不全,这时可以按三次 tab 键切换焦点到 Apply按钮,回车
    5. 配置中文输入法
      1. 运行 Settings,选择 Region & Language,在 Input Sources 下面点击按钮+,选择 Chinese,再选择 Intelligent Pinyin
    6. 问题解决
      1. 鼠标偏移现象:缩放模式下,容易发生鼠标偏移现象,请将分辨率改小些(1280 * 1024 或 1600 * 1200),或者按 RightCtrl + C 返回窗口模式
      2. 菜单全黑:需要关闭 Linux 虚拟机,然后在虚拟机设置对话框内禁用 "显示->屏幕->硬件加速"
    7. 重启 Ubuntu 后自动恢复会话(可选)
      1. sudo apt install dconf-tools
      2. dconf-editor
        1. 界面内进入 org/gnome/gnome-session, 打开 auto-save-session
    8. 增加 PATH 环境变量(可选)
      1. export PATH="/snap/bin:$PATH"
      2. echo $PATH
  2. 安装 git
    1. sudo apt install git
      1. git --version 输出为 v2.17.1
    2. 配置 ssh key
      1. 自行生成 ssh key
        1. ssh-keygen -t rsa
        2. cat ~/.ssh/id_rsa.pub
        3. 然后将输出的 id_rsa.pub 文件内容上传到 gitlab 内的 ssh keys 内
      2. 从 windows 内拖过来,拷贝到 ~/.ssh 内,需要更改权限,否则 git clone 仍然报错
        1. chmod 755 ~/.ssh/ 
        2. chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub 
        3. chmod 644 ~/.ssh/known_hosts
    3. 让 windows 下的 git 提交时自动将 crlf 转为 lf,签出时反向操作
      1. git config --global core.autocrlf true
    4. 设置一个全局 ignore 文件
      1. git config --global core.excludesfile '~/.gitignore'
    5. 在命令行使用交互式提交
      1. git commit --interactive
        1. 如果想更新文件,u<CR>,然后按已改变文件前面的索引数字,可以把文件状态变为 staged
        2. 如果想添加新文件,a<CR>,然后按已改变文件前面的索引数字,可以把文件状态变为 staged
        3. 想看现在 staged 了哪些文件,按 s<CR>
        4. 看文件 diff,按 d<CR>,然后按已改变文件前面的索引数字
        5. 添加或更新完毕,多按一个 <CR>,再按 q<CR>
        6. 然后编辑 commit message,下面 #打头的行可以不用理会
        7. 输入完 message 可以按 Ctrl+O<CR> 保存
        8. 按 Ctrl+X 退出,提交完毕
  3. 安装 python2.7
    1. 选择 anaconda python2.7版本,下载地址 https://www.anaconda.com/distribution/,优点是可以灵活切换 python 版本
    2. 重启 console 窗口后提示符前面有 (base)
  4. 安装 cmake
    1. (错误)使用 apt 安装:sudo apt install cmake # 安装的 cmake 版本为 3.10,太低
      1. 将安装的低版本卸载:sudo apt remove cmake
    2. (错误)使用 https://cmake.org/download 下载的linux 二进制文件和脚本安装,没有正确安装,无法正常运行
    3. (错误)下载源码,解压缩进入源码目录,执行 sudo ./bootstrap --prefix=/usr,提示缺少 openssl 开发包
    4. 使用 Ubuntu Software 来安装,搜索到两个版本,一个是 3.10(不要用),另一个是 3.17(使用这个)
  5. 安装编译器
    1. sudo apt install gcc g++ ninja-build llvm clang
    2. 获取编译器内置宏列表
      1. 获取 clang 的 builtin macros: clang -dM -E -x c /dev/null
      2. 获取 gcc 的 builtin macros: gcc -dM -E -x c /dev/null
  6. 安装开发包
    1. 安装 gtk(gbase message loop用到)
      1. sudo apt install libgtk-3-dev
    2. 安装 x11 开发包
      1. sudo apt install libx11-dev
      2. Xlib 开发手册:https://tronche.com/gui/x/xlib/
    3. 以安装 glew 开发包为例(使用 pkg-config)
      1. 显示 glew 模块信息:pkg-config --modversion glew
      2. 如果没有安装,可以先搜索:apt search glew
      3. 一般的输出是前面可能有 lib 前缀,后面可能带有版本号和 -dev 后缀,尽量使用带后缀 -dev 的
      4. 安装:sudo apt install libglew-dev
      5. 验证:pkg-config --cflags --libs glew
  7. 安装 vscode
    1. 下载地址 https://code.visualstudio.com/,注意 anaconda 内的 vccode 不能运行
    2. 在 vscode 内安装 extensions,要注意包名:
      1. C/C++,包名 ms-vscode.cpptools
      2. C++ Intellisense,包名 austin.code-gnu-global,用于代码提示,代码跳转
      3. CMake,包名 twxs.cmake,用于编辑 CMakeLists.txt 脚本时的语法提示
      4. CMake Tools,包名 gocarlos.cmake-tools,用于 cmake 构建,搜索时会出现两个,不要使用 1.3.1 版本,使用 1.5.2 版本
      5. Native Debug,包名 webfreak.debug,用于本地调试
    3. vscode 以 folder 为单元,一个 workspace 可以包含多个 folder,每个 folder 相当于一个项目
      1. vscode 的设置分为两种,一种是用户全局设置(储存于 ~/.config/Code/User/settings.json),一种是对每个 folder 的设置(储存于 folder 下子目录 .vscode/settings.json)
    4. 让 vscode 自动创建 settings.json:
      1. 在左侧贴边工具栏内点击 extensions,切换到扩展管理页面,并打开 cmake tools 的右键菜单最后一项
      2. 在设置页面内找一个带 Edit in settings.json 的,就自动创建了 .vscode 目录和下面的 settings.json
    5. 让 vscode 自动创建 launch.json:
      1. 在左侧贴边工具栏内点击 Run,切换到调试页面,点击其中的链接 Create configure in a launch.json
    6. 使用 settings.json 将参数传递给 cmake
      1. cmake.buildDirectory 是构建目录
      2. cmake.sourceDirectory 是源码目录
      3. cmake.environment 可以设置各种环境变量
      4. cmake.configureArgs 可以将参数传递给 cmake 命令行
      5. cmake.installPrefix 可以设置 install 目的目录
      6. 上面的参数支持内部变量扩展,vscode 内部变量列表参考 https://code.visualstudio.com/docs/editor/variables-reference
    7. 使用 tasks.json 自定义任务(待补充)
    8. 使用 launch.json 定义如何运行和调试
      1. program 属性,设置为程序全路径
      2. cwd 属性,设置为程序运行时的初始目录
      3. 定义好以后,切换到 debug 页面
        1. 在上面选择好 launch.json 定义好的配置,点击前面的绿色空心三角可以开始调试
      4. 打好断点后的调试界面
      5. 参考 https://code.visualstudio.com/docs/editor/debugging
  8. 其它:
    1. 解决乱码问题:
      1. Linux 提交源码后的中文变成乱码,因为 linux 编辑文件默认用的是 utf-8 编码,windows 是 gbk
        1. git config --global i18n.commitencoding utf-8
        2. git config --global i18n.logoutputencoding gbk
      2. ls 时中文显示为 ????
        1. alias ls="ls --show-control-chars"
    2. 查看当前字体
      1. sudo apt install gnome-tweak-tool
      2. gnome-tweak-tool
    3. 如果编译时找不到文件,如:glib.h
      1. locate glib.h
      2. 如果 locate 命令不存在:sudo apt install mlocate
    4. 如果出现 cmake 创建软链接失败,是因为构建目录不能是 windows 共享目录,NTFS 不支持软链接
      1. 使用 ln -s <exist_file> <new_symbolic_file> 可以测试是否能创建软链接
    5. git 操作访问不了你的 gitlab.xxx.com
      1. dig gitlab.xxx.com # 看看 DNS 是什么
      2. sudo gedit /etc/resolv.conf # 加上一行 nameserver 10.1.30.51 (这个IP是你知道的已有DNS server)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值