【问题标题】:using Linux instead of UNIX to compile c code for CS course使用 Linux 而不是 UNIX 为 CS 课程编译 c 代码
【发布时间】:2011-02-17 21:58:39
【问题描述】:

我在网上学习的一门 CS 课程建议学生编译他们的源代码并在 OS UNIX 上运行 valgrind 等工具。我对 UNIX、Linux、它们的工具和 c 编码完全陌生。我已经尝试在 VMWare Player 3.1.3 上安装 FreeBSD 8.1,甚至设法让 VMWare Tools 运行。但是 FreeBSD 文档让我在完成常见任务(即安装 NFS 或 USB 设备)时陷入了许多死胡同。事实证明,我没有安装或配置我需要的软件包,而且我没有看到任何关于如何安装它们的直接答案。

所以,如果我只使用 UNIX 作为运行本 CS 课程的 gcc、g++、valgrind 的工具,而这些可以在 Linux 上运行,那么使用 Ubuntu Linux 似乎可以更快地完成工作。

如果在 Linux 上编译,Linux 能否在 UNIX 上以相同的方式编译和运行 c 代码?或者如果不是,要寻找哪些差异?

谢谢

【问题讨论】:

  • 刚刚发现Remote X被课程提供为Xming for Windows,正是出于这个原因。

标签: c linux unix gnu


【解决方案1】:

对于像OP这样的初级C程序员来说,环境的差异可以忽略不计。继续使用 Linux。

【讨论】:

  • 松了一口气。我想听到的答案。希望如此:)
【解决方案2】:

我认为就课程而言,您可以在 Linux 上运行您的程序和工具,

但我猜你的老师希望你使用 FreeBSD 的原因是为了让你学习其他东西,而不仅仅是编写你的问题

【讨论】:

  • 一旦您了解了基础知识,FreeBSD 实际上是相当用户友好的。阅读手册 (freebsd.org/doc/handbook),这是一个很棒的文档。要安装端口,请使用 portsnap 获取端口树,cd 进入 /usr/ports// 并运行“make install”来安装它。安装 portmaster 以获得更好的界面。如果您希望 FreeBSD 安装简单并为您设置好一切,请使用 PC-BSD (pcbsd.org)。你会在 /usr/ports/devel/valgrind 中找到 Valgrind。您可以通过 Freshports - freshports.org 找到端口。祝你好运!
  • 感谢您的提示。刚刚发现 Remote X 由课程提供为 Xming for Windows,正是出于这个原因。哈,那会为我节省一些悲伤!
【解决方案3】:

两者实际上应该是相同的。您可能会看到的唯一主要区别是由于使用了不同的版本。我会检查老师让您使用的 gcc、g++ 和 valgrind 版本,并确保您在安装的 Linux 上运行相同的版本。

【讨论】:

    【解决方案4】:

    您也可以使用MinGWCygwin。您提到了 VMWare,所以我猜您只是想在 Windows 环境中启动并运行一个环境。它们都允许您使用编译器和一些工具,而无需完全安装基于 Linux 的系统。在 CS 课程中,它们已经绰绰有余了。

    【讨论】:

    • 可以 mingw 或 cygwin 托管 valgrind 吗?
    • 不,我不相信他们中的任何一个都可以,但我不能 100% 确定。看起来valgrind 是从源代码构建的,但我从来没有为这个工具做过。
    • 你听说过 cmake 吗?从他们的主页看,它似乎允许编译基于 Windows 的 c 源文件以针对不同的平台,即 UNIX。
    【解决方案5】:

    主要的区别也在寻找:

    1. 编译 C/C++ 不是机器独立的。如果您需要将编译后的程序提交给您的教授,那么无论如何您都需要有一个小型环境来在 UNIX 上进行编译。
    2. C / C++ 是相当可移植的如果你不使用任何不可移植的东西。很难验证您没有在两台机器之间使用不同的东西,因此您可能希望在 UNIX 上编译以验证您没有让不可用的库(或特定于操作系统过程、参数、行为、错误等)进入您的代码。
    3. 两台机器之间make 的供应商可能不同。这意味着虽然make 的核心运行方式相似,但某些功能可能在两者中都不可用。实际上,您可能不会使用大部分 makes 扩展功能,但在最坏的情况下,您可能会选择维护多个 Makefiles 或将自己限制为一个通用的功能子集。

    归根结底,这一切都归结为您的教授想要什么。您可以在 Linux 中完成 100% 的工作的几率是 95% 以上,但是教授的要求或评分环境可能会导致您必须将代码复制到 UNIX 帐户中才能构建最终的“提交”可执行文件。考虑到大学 UNIX 帐户的可移植性不如笔记本电脑上的 Linux,与花费更多时间完成家庭作业的便利性相比,“最终验证/移植”到大学计算机的成本可能很小在固定实验室管理。

    【讨论】:

    • 没错,我希望在家中完成大部分编码工作,而不是在配备 TA 的完全配置的实验室环境中进行。看起来我会承担将代码移植到远程 UNIX 机器的成本,而不是在 UNIX 安装上旋转我的轮子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 2019-06-01
    • 2011-06-14
    • 2023-04-06
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多