161

如何在 Unix 控制台或 Mac 终端中编译/运行 C 或 C++ 代码?

4

19 回答 19

220

如果是简单的单源程序,

make foo

如果源文件是foo.cfoo.cpp等,你甚至不需要生成文件。Make 有足够的内置规则将您的源文件构建为同名的可执行文件,减去扩展名。

运行刚刚构建的可执行文件与运行任何程序相同 - 但您通常需要指定可执行文件的路径,因为 shell 只会搜索其中的内容$PATH以查找可执行文件,而且通常不包括当前目录 ( .)。

所以要运行构建的可执行文件foo

./foo
于 2008-10-21T09:10:24.793 回答
124
gcc main.cpp -o main.out
./main.out
于 2008-10-21T08:46:38.930 回答
74

这是适用于所有 Unix 机器的命令……我在 Linux/Ubuntu 上使用它,但它也适用于 OS X。在Terminal.app中键入以下命令。

g++ -o lab21 iterative.cpp

-o是字母 O,而不是零

lab21将是您的可执行文件

iterative.cpp是你的 C++ 文件

运行该命令后,在终端中键入以下内容以运行您的程序:

./lab21
于 2011-02-24T18:02:03.813 回答
34

对我来说两个步骤:

第一的:

make foo

然后:

./foo
于 2014-07-28T11:52:50.720 回答
15

Unix(Linux、Mac OS X、AIX 等)环境中的所有应用程序执行都取决于可执行文件搜索路径。

您可以使用以下命令在终端中显示此路径:

回声 $PATH

在 Mac OS X(默认)上,这将显示以下冒号分隔的搜索路径:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

因此,列出目录中的任何可执行文件都可以通过键入其名称来运行。例如:

猫 mytextfile.txt

这将运行/bin/cat并将 mytextfile.txt 显示到终端。

要运行不在可执行文件搜索路径中的任何其他命令,您需要限定可执行文件的路径。因此,假设我在 Mac OS XI 的主目录中有一个名为 MyProgram 的可执行文件,可以像这样完全限定它:

/用户/奥利弗/我的程序

如果您位于要执行的程序附近的位置,则可以使用部分路径限定名称。例如,如果MyProgram在我的目录中/Users/oliver/MyProject,并且我在我的主目录中,我可以像这样限定可执行文件名称,并让它执行:

我的项目/我的程序

或者说我在目录中/Users/oliver/MyProject2并且我想执行/Users/oliver/MyProject/MyProgram我可以使用这样的相对路径来执行它:

../我的项目/我的程序

同样,如果我在同一个目录中,MyProgram我需要使用“当前目录”相对路径。您所在的当前目录是句点字符后跟一个斜杠。例如:

./我的程序

要确定您当前使用的是哪个目录,请使用该pwd命令。

如果您通常将程序放在硬盘上您希望运行而无需限定其名称的位置。例如,如果您的主目录中有一个“bin”目录,用于存放其他程序的常用 shell 脚本,那么更改可执行文件搜索路径可能是明智之举。

这可以通过.bash_profile在主目录中创建或编辑现有文件并添加以下行来轻松完成:

#!/bin/sh
export PATH=$PATH:~/bin

这里波浪号 (~) 字符被用作 /Users/oliver 的快捷方式。另请注意,井号 (#!) 行必须是文件的第一行(如果它尚不存在)。另请注意,此技术要求您的登录 shell 是 bash(Mac OS X 和大多数 Linux 发行版上的默认设置)。另请注意,如果您希望安装的程序~/bin优先于系统可执行文件使用,则应重新排序导出语句,如下所示:

export PATH=~/bin:$PATH
于 2008-10-22T07:51:33.080 回答
11

在“终端”中执行所有这些操作。

要使用 G++ 编译器,您需要这样做:

  1. 导航到存储 *.cpp 文件的目录。

    cd ~/programs/myprograms/ (~ 是您家的快捷方式,即 /Users/Ryan/programs/myprograms/,替换为您实际使用的位置。)

  2. 编译它

    g++ input.cpp -o output.binoutput.bin可以是任何具有任何扩展名的东西,真的。扩展名 .bin 在 Unix 上很常见。)

    如果成功应该没有任何返回,这没关系。通常,您会因失败而获得回报。

    但是,如果您键入ls,您将看到同一目录中的文件列表。例如,您会看到其他文件夹input.cppoutput.bin

  3. 从目录内部,现在执行它./outbut.bin

于 2012-12-04T23:38:28.900 回答
10

一种紧凑的方法可能是:

make foo && ./$_

很高兴有一个单行,这样您就可以轻松地再次重新运行您的可执行文件。

于 2015-01-14T04:07:36.243 回答
8

假设当前目录不在路径中,则语法为./[name of the program].

例如./a.out

于 2008-10-21T08:45:46.373 回答
8

要编译 C 或 C++ 程序,有一个常用命令:

  1. make filename

  2. ./filename

make会将您的源文件构建为具有相同名称的可执行文件。但是如果你想使用标准的方式,你可以使用gcc编译器来构建 C 程序和g++C++。

对于 C:

gcc filename.c

./a.out

对于 C++:

g++ filename.cpp

./a.out
于 2018-04-11T10:33:31.287 回答
7

添加以下内容以获得最佳警告,您将不会后悔。如果可以,请使用 WISE 进行编译(警告为错误)。

- Wall -pedantic -Weffc++ -Werror
于 2008-10-21T08:52:01.697 回答
3

第 1 步 - 使用命令创建一个 cpp 文件

touch test.cpp

第 2 步 - 运行此命令

g++ test.cpp

第 3 步 - 运行您的 cpp 文件

./a.out
于 2021-04-08T16:53:09.477 回答
2

使用makefile. 即使对于非常小的(= 一个文件)项目,付出努力可能也是值得的,因为您可以拥有几组编译器设置来测试事物。以这种方式调试和部署工作更容易。

阅读make手册。乍一看似乎很长,但大多数部分你可以略读。总而言之,这花了我几个小时,让我更有效率。

于 2008-10-21T08:58:47.393 回答
2

我找到了这个带有方向的链接:

http://www.wesg.ca/2007/11/how-to-write-and-compile-c-programs-on-mac-os-x/

基本上你这样做:

gcc hello.c
./a.out (or with the output file of the first command)
于 2011-12-22T18:40:40.010 回答
2

只需输入 .c/.cpp 文件所在的目录即可。

用于编译和运行 C 代码。

gcc filename.c
./a.out filename.c

用于编译和运行 C++ 代码。

g++ filename.cpp
./a.out filename.cpp
于 2018-10-05T11:49:31.703 回答
2

为了从 Mac 终端编译和运行 C++ 源代码,需要执行以下操作:

  1. 如果 .cpp 文件的路径是 somePath/fileName.cpp,首先进入路径为 somePath 的目录
  2. 要编译fileName.cpp,请键入c++ fileName.cpp -o fileName
  3. 要运行程序,请键入./fileName
于 2019-06-14T18:46:18.787 回答
0

使用终端运行 .C 文件是一个两步过程。第一步是在终端输入 gcc 并将 .C 文件拖放到终端,然后按Enter

gcc /Desktop/test.c

在第二步中,运行以下命令:

~/a.out
于 2016-08-23T07:06:31.593 回答
0

要运行 C++ 文件,请运行以下命令,假设文件名为“main.cpp”。

  1. 编译以从 C++ 文件生成目标文件。

    g++ -c main.cpp -o main.o
    
  2. 由于#include <conio.h>macOS 不支持,我们应该使用 Mac 支持的替代方案。那就是#include <curses.h>。现在需要将目标文件转换为可执行文件。要使用文件curses.h,我们必须使用 library -lcurses

    g++ -o main main.o -lcurses
    
  3. 现在运行可执行文件。

    ./main
    
于 2020-06-05T12:33:05.187 回答
0

您需要进入保存文件的文件夹。编译代码:gcc fileName 您也可以使用g++ fileName 这将编译您的代码并创建一个二进制文件。现在在同一文件夹中查找二进制文件并运行它。

于 2020-12-13T03:59:50.963 回答
0

我正在使用带有Apple M1 Pro芯片的新MacBook Pro 。我安装了Xcode - IDE 和命令行工具。这就是它对我的工作方式:

g++ one.cpp -o one

./one
于 2022-02-09T01:39:27.763 回答