【问题标题】:Running C program On ubuntu [closed]在ubuntu上运行C程序[关闭]
【发布时间】:2013-04-08 15:14:07
【问题描述】:

我是 Ubuntu 的新手。我想在 Ubuntu 上运行 c 程序。 我已经安装了 build-essential。 现在我尝试了以下命令来运行程序..

sudo gedit first.c

然后键入基本的 hello world 程序。那么……

cc -c first.c -o first.c

但是在这个命令上它显示错误为

没有输入文件。

并告诉我如何运行这个程序。

【问题讨论】:

  • 如果编译器按照您的要求用目标代码覆盖您的源代码,您会感到不安。将最后的.c 更改为.o

标签: c ubuntu-11.04


【解决方案1】:

首先,您不必以 root 身份编辑文件。这是个坏主意。

cc -c first.c -o first.c 行会覆盖你不想要的 C 文件

cc first.c -o first

然后你想运行程序 你可以用

./first

【讨论】:

  • 但编译时工作正常,但运行时显示错误为>Permission Denied
  • 然后修复权限,但不要编程为root,除非你不介意因为犯了一个愚蠢的错误而丢失你的机器。这不值得。尽可能少做root。
【解决方案2】:

那个编译命令行应该可以工作的。 但是它将覆盖您的源文件。

-o 选项告诉编译器如何命名输出文件,如果您将其命名为与源文件相同的名称,它将被覆盖。

您传递给编译器的第一个标志-c 告诉编译器生成一个目标文件。链接器稍后可以使用这些目标文件与其他目标文件链接以创建最终的可执行程序。但是,它不会创建您可以运行的程序。

要从单个源文件创建可执行程序,请执行以下操作:

$ cc first.c -o first

这将创建一个名为first 的可执行程序(当然如果没有错误的话)。

然后运行这个程序:

$ ./first

最后一条命令告诉 shell 在当前目录(名为 .)中查找 first,并执行它。

【讨论】:

  • 也可以这样工作 $ gcc first.c -o 先按回车,然后以 $ ./first 运行可执行程序,再按回车
【解决方案3】:

正确的用法是:

cc -o outputfile myFile.c

然后就可以运行可执行文件了:

./outputfile

【讨论】:

    【解决方案4】:

    您不希望在输出文件中出现.c。即

    cc -c first.c -o first
    

    编辑:糟糕。你也不想要-c

    cc -o first first.c
    

    【讨论】:

      【解决方案5】:

      删除-c 并尝试:

      cc first.c -o first
         ^^^^^^^ ^^^^^^^^
          input   output  
      

      运行:

      ./first
      

      【讨论】:

        【解决方案6】:

        Make 被配置为默认识别某些文件扩展名,因此您可以简单地这样做:

        make first
        

        Make 然后会找到first.c 并生成first 二进制可执行文件,并显示它使用的编译命令。请注意,要使其以合理的方式工作,您应该只有一个 first.XXX 源文件。另外,一旦你有多个源文件,你需要写一个Makefile,但是只有一个源默认就足够了。

        要运行生成的可执行文件,请执行以下操作

        ./first
        

        ./ 是必需的,因为在 unix 环境中,工作目录通常不在(也不应该)在 PATH 中。


        哦,是的,正如其他人所提到的:不要将sudo 用于此类内容。如果你已经这样做了,你就不能以普通用户的身份修改/删除这些文件,因为它们归根用户所有。做ls -l,它会告诉你文件的所有者。然后您可以通过sudo chown yourusername.yoursername filefile 的所有者更改为yourusername(用户和文件组)拥有。

        【讨论】:

          猜你喜欢
          • 2022-01-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-23
          • 2012-02-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多