【问题标题】:Setting up environment for learning C搭建学习环境 C
【发布时间】:2017-03-17 18:52:21
【问题描述】:

我正在尝试按照 MIT OCW 材料学习 C/C++ 编程。我正在运行一台 Windows PC,课程材料要求使用gcc/g++ 编译器(用于 C 和 C++)在 Linux 环境下运行所有​​ C/C++ 程序。它们还需要使用gdbvalgrind 作为调试器。

我已经从 MinGW 包中安装了 gcc/g++,我想知道是否有关于如何实现设置的具体说明。现在我希望能够设置 Linux,gdbvalgrind,并且至少可以编写一个简单的程序并在 Linux 环境中编译和运行它。现在我还安装了 VirtualBox,但由于某种原因,我创建的虚拟机总是给出以下消息:FATAL: No bootable medium found! System halted

我想我只是迷失在开始学习所需的所有软件包/工具中。我以前只使用过 Microsoft Visual Studio,所以这些全新的命令提示符和工具让我很困惑。如果有人能给我具体的说明,告诉我如何从 Windows PC 开始,并在 Linux 环境中使用gdbvalgrind 编译和调试一个简单的 C 程序。

【问题讨论】:

  • 同时开始学习,试试repl.it这是一个功能齐全的语言系列,您可以免费在线使用。
  • 我看不出 MinGW 包与这种情况有什么关系。你对在 MS-Windows 下使用那些 gcc 包不感兴趣,那你为什么要安装它们呢?您需要一个运行某些 Linux 发行版的工作虚拟机(实际上是物理机)。有准备使用的设备下载。然后,您可以使用分发包管理系统通过单击几下鼠标来安装所需的包。但是,如果您不共享当前配置,恐怕我们无法帮助您进行设置...
  • 你需要在virtualbox中挂载一个linux安装盘

标签: c linux windows gcc


【解决方案1】:

我建议您使用 VirtualBox 创建虚拟机。这是最好的,因为它对您的开发环境进行沙盒处理,您可以在一个真正的 Linux 环境中工作。VirtualBox 是免费的开源软件,您可能不需要在 VMWare 或 Parallels 中看到的任何高级功能。

现在您已经构建了环境,您可以创建一个目录来存放您的项目文件夹。根据提示执行mkdir projectscd projectsmkdir helloworldcd helloworld。然后,您可以使用内置编辑器nano 来编辑文件。输入nano hello.c,然后输入以下内容:

#include <stdio.h>
int main()
{
    printf("Hello, world\n");
}

然后输入Ctrl-O 写出,然后输入Ctrl-X 退出。

那么你只需要安装gcc,我建议也安装make

$ sudo apt install gcc
...
$ sudo apt install make

现在在您的开发环境中编译和测试您的第一个程序:

$ make hello
$ ./hello

那么您应该会在屏幕上看到Hello, world

Valgrind 和卸载磁盘

从您的helloworld 项目文件夹中输入sudo apt install valgrind,然后运行valgrind ./hello

最后,进入设置 -> 存储并卸载安装 ISO。

SSH 访问

使用以下命令安装openssh-server

sudo apt install openssh-server

通过键入ifconfig 查找您的 Ubuntu 主机的 IP 地址。然后对于 VirtualBox 转到 Settings :: Network :: Advanced 并单击 Port Forwarding。使用这些设置:

Host IP: 127.0.0.1
Host Port: 22
Guest IP: (IP of Ubuntu VM)
Guest Port: 22

现在您可以ssh 连接到您的 Ubuntu 虚拟机,还可以使用 scp 等工具。

共享文件夹

共享文件夹允许您拥有一个跨越两个文件系统的介质,允许您在两个环境之间共享文件。此资源在不同方法中提供了更多详细信息:https://www.virtualbox.org/manual/ch04.html#sharedfolders。我将在此处详细介绍如何快速设置。

以下将安装 VirtualBox 共享文件夹所需的 Linux 头文件:

sudo apt-get install build-essential linux-headers-`uname –r`

然后进入VirtualBox菜单的Devices标签,点击Insert Guest Additions CD image...

现在我们需要mount cdrom 并运行脚本:

sudo mount /dev/cdrom /media/cdrom
sudo /media/cdrom/VBoxLinuxAdditions.run

找出您要共享的 Windows 文件夹,并通过转到 VirtualBox 来宾 Machine :: Settings :: Shared Folders 并使用选项 Auto-mountMake Permanent 添加它来共享它。完成后,发送sudo reboot

共享文件夹自动添加并存在于/media/sf_*中。

您必须在vboxsf 组中才能使用这些文件。使用此命令将用户 testuser 添加到该组:

sudo usermod -aG vboxsf testuser
sudo reboot

【讨论】:

  • 嗨,格雷格,感谢您的详细说明!你很清楚,一切都对我有用!现在我玩了一些终端命令,我找不到我的下载文件(被告知路径应该是/home/user/Downloads)所在的位置。我的用户名下只有一个文件,是我按照您的 mkdir 命令创建的。我正在尝试下载 sublime text 作为我的主要文本编辑器并在其中编写代码,但不知道我的下载文件在哪里,我无法判断我是否正确下载了 sublime,请帮助我。谢谢先生:D
  • 您好 Johnny,因为 Linux 环境位于虚拟机内部,所以您没有任何单一的访问方法可以跨越两个文件系统。为此,您需要使用 VirtualBox 在 Windows 环境和 Linux 虚拟环境之间共享一个文件夹。有教程,但稍后我将在 Ubuntu 中执行此操作并逐步发布更新。如果您在我开始之前找到了教程并开始使用它,请随时通过发表评论或通过回答编辑(如果您被允许)来为社区做出贡献。
  • 顺便说一下,我告诉过你使用 Ubuntu 服务器,因为它是一个命令行界面,你应该习惯在其中工作。但是,如果你想知道 Linux 图形界面是什么样子的喜欢,随意下载 Ubuntu 桌面并将其安装到另一个 VM 并运行它以获得这种体验。
  • 最后,SSH 是另一种访问 Linux/Unix 服务器上资源的好方法,我稍后会添加这些说明。
  • Johnny,Sublime 有一个 SFTP 插件,您可以使用它来远程编辑文件,您应该使用它。所以你可以在你的 Windows 环境中运行 Sublime 并远程编辑你的 Linux 文件。这个问题的第一个答案是一个很好的起点:*.com/questions/15958056/…。然后您可以进行更改、保存它们,然后跳回您的 Linux 环境使用makevalgrind 等进行编译/测试。