我运行sudo g ++ main.cpp,但未运行该程序

时间:2019-04-27 20:34:42

标签: c++ xcode macos

我正在尝试从macOS上的终端运行程序。我运行此:

sudo g++ main.cpp

但是它只是“跳过”命令而不会生成程序,就像这样

101:nrprim mac$ sudo g++ main.cpp 
101:nrprim mac$ 

这是代码:

#include <iostream>
using namespace std;
bool divizibil(int n, int i){
    if (n%i==0) return 1; else return 0;
}

int numarDivizori(int n){
    int i, c=0;
    for (i=1; i<=n; i++)
        if (divizibil(n,i)) c++;
    return c;
}

void prim(int n){
    int c=0;
    c=numarDivizori(n);
    if (c>2) cout<<"Numarul nu e prim"; else
        cout<<"Numarul e prim\n";

}
int main() {
    int n;
    cout<<"n=";
    cin>>n;
    prim(n);
    return 0;
}

我希望它将输出

  

n =

然后等待输入

3 个答案:

答案 0 :(得分:3)

它确实生成了程序,您应该在同一目录中将其视为a.out。如果您想使用其他名称,请使用-o选项。您可以通过简单地运行此a.out或命名的可执行文件来运行程序。

c++ src.cpp -o myoutput

顺便说一句,我认为您不需要sudo

答案 1 :(得分:2)

G ++ 编译您的代码,这与执行您的代码不同。如果在终端中键入 ls ,您应该会看到新文件,该文件是G ++通过编译源文件创建的。如果运行那个文件,则应该看到程序已执行。

编译正在获取您的源代码,并且基本上将其从一种语言翻译成另一种语言。在这种情况下,G ++会将您的代码从C ++编译为机器可以理解的二进制语言。编译后,结果将保存到文件中。该文件通常是可执行文件,您可以通过在终端中键入其名称来运行。例如,如果可执行文件是 a ,则您键入 ./ a ./ 会告诉终端文件位于当前目录)。

编辑:而且,正如其他人所说,您可能不应该将sudo用于此类操作,因为它很可能不是必需的,而且很危险。

答案 2 :(得分:1)

您可以像这样在一行中运行它:

g++ file cpp && ./a.out

或在运行后删除a.out

g++ file.cpp && ./a.out && rm a.out

g++ file.cpp编译,链接并创建可执行文件a.out。要运行a.out,您只需输入./a.out。第二行中的rm a.out将删除a.out&&表示前一个命令是否成功,继续下一个。

多一个注释编译时不需要sudo