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

时间:2008-10-21 08:43:35

标签: c++ c macos console terminal

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

(我知道,忘掉它,再重新学习它。是时候把它写下来了。)

19 个答案:

答案 0 :(得分:168)

如果它是一个简单的单一来源程序:

make foo

源文件是foo.c或foo.cpp等

你甚至不需要makefile。 Make有足够的内置规则来将源文件构建为同名的可执行文件,减去扩展名。

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

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

./foo

答案 1 :(得分:103)

gcc main.cpp -o main.out  
./main.out

答案 2 :(得分:65)

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

$ g++ -o lab21 iterative.cpp

-o是字母O而不是零

lab21将是您的可执行文件

iterative.cpp是你的c ++文件

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

$ ./lab21

答案 3 :(得分:31)

我的两个步骤:

第一

make foo

然后:

./foo

答案 4 :(得分:15)

Unix(Linux,Mac OS 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 OS X上的主目录中有一个名为MyProgram的可执行文件,我可以像这样完全符合条件:

  

/用户/奥利弗/ 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

答案 5 :(得分:10)

瑞安,我正在改变这个问题而不是评论,因为看起来我太简短了。在“终端”中做所有这些。

要使用G ++编译器,您需要执行以下操作:

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

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

  2. 编译

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

    如果成功,应该返回NOTHING,那是好的。一般来说,你会得到失败的回报。

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

  3. 从目录中,现在使用./outbut.bin

  4. 执行它

答案 6 :(得分:8)

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

例如./a.out

答案 7 :(得分:7)

添加以下内容以获得最佳警告,您不会后悔。如果可以,编译WISE(警告是错误的)

- Wall -pedantic -Weffc++ -Werror

答案 8 :(得分:7)

这样做的紧凑方式可能是:

make foo && ./$_

很高兴有一个单行,所以你可以轻松地重新运行你的可执行文件。

答案 9 :(得分:4)

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

  1. make filename

  2. ./filename

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

    对于C:

    gcc filename.c
    
    ./a.out
    

    对于C ++:

    g++ filename.cpp
    
    ./a.out
    

答案 10 :(得分:2)

使用makefile。即使是非常小的(=一个文件)项目,这项工作也许值得,因为您可以使用几组编译器设置来测试。通过这种方式调试和部署变得更加容易。

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

答案 11 :(得分:1)

我发现这个链接有方向:

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)

答案 12 :(得分:1)

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

<块引用>

触摸测试.cpp

第 2 步 - 运行此命令

<块引用>

g++ test.cpp

第 3 步 - 运行您的 cpp 文件

<块引用>

./a.out

答案 13 :(得分:0)

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

用于编译和运行c代码。

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

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

$g++ filename.cpp
$./a.out filename.cpp

“ $”是默认的Mac终端符号

答案 14 :(得分:0)

要从Mac终端编译并运行cpp源代码,需要执行以下操作:

  1. 如果cpp文件的路径为somePath / fileName.cpp,请首先转到路径为somePath的目录
  2. 要编译fileName.cpp,请键入c ++ fileName.cpp -o fileName
  3. 要运行该程序,请键入./fileName

答案 15 :(得分:0)

对于运行以下命令运行的c ++文件,假设文件名为“ main.cpp”

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

g++ -c main.cpp -o main.o

2。由于#include <conio.h>在MacOS中不支持,因此我们应该使用#include <curses.h>在Mac中支持的替代方法。现在,目标文件需要转换为可执行文件。要使用curses.h,我们必须使用库-lcurses

g++ -o main main.o -lcurses

3。现在运行可执行文件。

./main

答案 16 :(得分:0)

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

答案 17 :(得分:-1)

使用终端运行.C文件分为两步。 第一步是在终端中键入gcc并将.C文件拖放到终端,然后按 Enter

username$ gcc /Desktop/test.c 

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

username$ ~/a.out

答案 18 :(得分:-1)

进入根目录(应为~),然后查看名为.bash_profile的文件。将此代码粘贴到新行上:

function run() {
    eval make $1
    eval ./$1
}

重新启动您打开的所有终端。现在,通过给c++加上前缀来运行任何run程序:

run hello-world