如何在 Unix 控制台/Mac 终端中编译和运行 C/C++?
题
如何在 Unix 控制台或 Mac 终端中编译/运行 C 或 C++?
(知道了,忘记了,再重新学一遍。是时候写下来了。)
解决方案
如果它是一个简单的单一来源程序:
make foo
源文件是foo.c或foo.cpp等
你甚至不需要makefile。 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 操作系统,X,AIX等)环境中的所有应用程序执行都取决于可执行的搜索路径。
您可以使用以下命令在终端中显示此路径:
echo $ PATH
在Mac OS X上(默认情况下),这将显示以下冒号分隔的搜索路径:
的/ usr / bin中:/ bin中:/ usr / sbin目录:/ sbin目录:在/ usr / local / bin中:在/ usr / X11 / bin中
因此,列出的目录中的任何可执行文件都可以通过输入其名称来运行。例如:
cat mytextfile.txt
运行 / bin / cat
并将mytextfile.txt显示到终端。
要运行不在可执行搜索路径中的任何其他命令,您需要限定可执行文件的路径。所以说我在Mac上的主目录中有一个名为MyProgram的可执行文件操作系统  X我可以像这样完全符合条件:
/用户/奥利弗/ MyProgram
如果您所在的位置靠近您希望执行的程序,则可以使用部分路径限定名称。例如,如果 MyProgram
在目录 / Users / oliver / MyProject
中,我和我在我的主目录中,我可以像这样限定可执行文件名,并让它执行:
MyProject的/ MyProgram
或者说我在目录 / Users / oliver / MyProject2
中我想执行 / Users / oliver / MyProject / MyProgram
我可以使用相对路径这个,执行它:
../ MyProject的/ MyProgram
同样,如果我与 MyProgram
在同一目录中,我需要使用“当前目录”。相对路径。您所在的当前目录是句点字符后跟斜杠。例如:
./ MyProgram
要确定您当前使用的目录是 pwd
命令。
如果您经常将程序放在您希望运行的硬盘上,而不必限定其名称。例如,如果你有一个“bin”,您的主目录中的目录,对于其他程序的常用shell脚本,更改可执行搜索路径可能是明智的。
通过在主目录中创建或编辑现有的 .bash_profile
文件并添加以下行,可以轻松实现这一点:
#!/bin/sh
export PATH=$PATH:~/bin
这里,波浪号(〜)字符被用作/ Users / oliver的快捷方式。另请注意,hash bang(#!)行需要是文件的第一行(如果它尚不存在)。另请注意,此技术要求您的登录shell为bash(默认情况下为Mac  OS  X和大多数Linux发行版)。另请注意,如果您希望在〜/ bin
中安装程序而不是系统可执行文件,则应按如下方式对export语句重新排序:
export PATH=~/bin:$PATH
要使用G ++编译器,您需要执行以下操作:
-
导航到存储* .cpp文件的目录。
cd~ / programs / myprograms /
(〜是您家的快捷方式,即/ Users / Ryan / programs / myprograms /,替换为您实际使用的位置。) -
编译
g ++ input.cpp -o output.bin
(output.bin可以是任何扩展名,实际上.bin在unix上很常见。)如果成功,应该返回NOTHING,那是好的。一般来说,你会得到失败的回报。
但是,如果键入
ls
,您将在同一目录中看到文件列表。例如,您将看到其他文件夹,input.cpp和output.bin -
从目录内部,现在用
./ outbut.bin
执行它
醇>
假设当前目录不在路径中,则语法为 ./ [程序名称]
。
例如 ./ a.out
添加以下内容以获得最佳警告,您不会后悔。如果可以,编译WISE(警告是错误的)
- Wall -pedantic -Weffc++ -Werror
这样做的紧凑方式可能是:
make foo && ./这样做的紧凑方式可能是:
<*>
很高兴有一个单行,所以你可以轻松地重新运行你的可执行文件。
很高兴有一个单行,所以你可以轻松地重新运行你的可执行文件。
要编译C或C++程序,有一个常用命令:
make filename
./filename
make 会将您的源文件构建为同名的可执行文件。但如果你想使用标准方式,你可以使用 gcc 编译器来构建 C 程序,并使用 g++ 来构建 c++
对于C:
gcc filename.c
./a.out
对于 C++:
g++ filename.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
<强>&QUOT; $&QUOT;是默认的mac终端符号
为了从Mac终端编译和运行cpp源代码,需要执行以下操作:
- 如果cpp文件的路径是somePath / fileName.cpp,首先去路径为somePath的目录
- 要编译fileName.cpp,请键入c ++ fileName.cpp -o fileName
- 要运行该程序,请键入./fileName 醇>
使用终端运行.C文件分为两步。 第一步是在终端中键入gcc并将.C文件拖放到终端,然后按 Enter :
username$ gcc /Desktop/test.c
在第二步中,运行以下命令:
username$ ~/a.out