如何在 Unix 控制台或 Mac 终端中编译/运行 C 或 C++ 代码?
19 回答
如果是简单的单源程序,
make foo
如果源文件是foo.c、foo.cpp等,你甚至不需要生成文件。Make 有足够的内置规则将您的源文件构建为同名的可执行文件,减去扩展名。
运行刚刚构建的可执行文件与运行任何程序相同 - 但您通常需要指定可执行文件的路径,因为 shell 只会搜索其中的内容$PATH
以查找可执行文件,而且通常不包括当前目录 ( .
)。
所以要运行构建的可执行文件foo
:
./foo
gcc main.cpp -o main.out
./main.out
这是适用于所有 Unix 机器的命令……我在 Linux/Ubuntu 上使用它,但它也适用于 OS X。在Terminal.app中键入以下命令。
g++ -o lab21 iterative.cpp
-o
是字母 O,而不是零
lab21
将是您的可执行文件
iterative.cpp
是你的 C++ 文件
运行该命令后,在终端中键入以下内容以运行您的程序:
./lab21
对我来说两个步骤:
第一的:
make foo
然后:
./foo
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
在“终端”中执行所有这些操作。
要使用 G++ 编译器,您需要这样做:
导航到存储 *.cpp 文件的目录。
cd ~/programs/myprograms/
(~ 是您家的快捷方式,即 /Users/Ryan/programs/myprograms/,替换为您实际使用的位置。)编译它
g++ input.cpp -o output.bin
(output.bin可以是任何具有任何扩展名的东西,真的。扩展名 .bin 在 Unix 上很常见。)如果成功应该没有任何返回,这没关系。通常,您会因失败而获得回报。
但是,如果您键入
ls
,您将看到同一目录中的文件列表。例如,您会看到其他文件夹input.cpp和output.bin从目录内部,现在执行它
./outbut.bin
一种紧凑的方法可能是:
make foo && ./$_
很高兴有一个单行,这样您就可以轻松地再次重新运行您的可执行文件。
假设当前目录不在路径中,则语法为./[name of the program]
.
例如./a.out
要编译 C 或 C++ 程序,有一个常用命令:
make filename
./filename
make会将您的源文件构建为具有相同名称的可执行文件。但是如果你想使用标准的方式,你可以使用gcc
编译器来构建 C 程序和g++
C++。
对于 C:
gcc filename.c
./a.out
对于 C++:
g++ filename.cpp
./a.out
添加以下内容以获得最佳警告,您将不会后悔。如果可以,请使用 WISE 进行编译(警告为错误)。
- Wall -pedantic -Weffc++ -Werror
第 1 步 - 使用命令创建一个 cpp 文件
touch test.cpp
第 2 步 - 运行此命令
g++ test.cpp
第 3 步 - 运行您的 cpp 文件
./a.out
使用makefile
. 即使对于非常小的(= 一个文件)项目,付出努力可能也是值得的,因为您可以拥有几组编译器设置来测试事物。以这种方式调试和部署工作更容易。
阅读make
手册。乍一看似乎很长,但大多数部分你可以略读。总而言之,这花了我几个小时,让我更有效率。
我找到了这个带有方向的链接:
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)
只需输入 .c/.cpp 文件所在的目录即可。
用于编译和运行 C 代码。
gcc filename.c
./a.out filename.c
用于编译和运行 C++ 代码。
g++ filename.cpp
./a.out filename.cpp
为了从 Mac 终端编译和运行 C++ 源代码,需要执行以下操作:
- 如果 .cpp 文件的路径是 somePath/fileName.cpp,首先进入路径为 somePath 的目录
- 要编译fileName.cpp,请键入
c++ fileName.cpp -o fileName
- 要运行程序,请键入
./fileName
使用终端运行 .C 文件是一个两步过程。第一步是在终端输入 gcc 并将 .C 文件拖放到终端,然后按Enter:
gcc /Desktop/test.c
在第二步中,运行以下命令:
~/a.out
要运行 C++ 文件,请运行以下命令,假设文件名为“main.cpp”。
编译以从 C++ 文件生成目标文件。
g++ -c main.cpp -o main.o
由于
#include <conio.h>
macOS 不支持,我们应该使用 Mac 支持的替代方案。那就是#include <curses.h>
。现在需要将目标文件转换为可执行文件。要使用文件curses.h,我们必须使用 library-lcurses
。g++ -o main main.o -lcurses
现在运行可执行文件。
./main
您需要进入保存文件的文件夹。编译代码:gcc fileName
您也可以使用g++ fileName
这将编译您的代码并创建一个二进制文件。现在在同一文件夹中查找二进制文件并运行它。
我正在使用带有Apple M1 Pro芯片的新MacBook Pro 。我安装了Xcode - IDE 和命令行工具。这就是它对我的工作方式:
g++ one.cpp -o one
./one