我是 Ubuntu 的新手。我想在 Ubuntu 上运行 c 程序。我已经安装了 build-essential。现在我尝试了以下命令来运行程序..
sudo gedit first.c
然后键入基本的 hello world 程序。然后...
cc -c first.c -o first.c
但是在这个命令上它显示错误为
没有输入文件。
并告诉我如何运行这个程序。
我是 Ubuntu 的新手。我想在 Ubuntu 上运行 c 程序。我已经安装了 build-essential。现在我尝试了以下命令来运行程序..
sudo gedit first.c
然后键入基本的 hello world 程序。然后...
cc -c first.c -o first.c
但是在这个命令上它显示错误为
没有输入文件。
并告诉我如何运行这个程序。
起初,您不必以 root 身份编辑文件。这是个坏主意。
该行cc -c first.c -o first.c
会覆盖您不想要的 C 文件
cc first.c -o first
然后你想运行你可以使用的程序
./first
该编译命令行应该可以工作。但是它会覆盖您的源文件。
这些-o
选项告诉编译器如何命名输出文件,如果您将其命名为与源文件相同的名称,它将被覆盖。
您传递给编译器的第一个标志-c
,告诉编译器生成一个目标文件。链接器稍后可以使用这些目标文件与其他目标文件链接以创建最终的可执行程序。但是,它不会创建您可以运行的程序。
要从单个源文件创建可执行程序,请执行以下操作:
$ cc first.c -o first
这将创建一个名为first
.
然后运行这个程序:
$ ./first
最后一条命令告诉 shellfirst
在当前目录(名为.
)中查找并执行它。
你不想.c
在输出文件上。IE
cc -c first.c -o first
编辑:哎呀。你也不想要-c
cc -o first first.c
正确的用法是:
cc -o outputfile myFile.c
然后你可以运行可执行文件:
./outputfile
删除-c
并尝试:
cc first.c -o first
^^^^^^^ ^^^^^^^^
input output
跑步:
./first
Make 配置为默认识别某些文件扩展名,因此您可以简单地执行以下操作:
make first
然后 Make 将找到first.c
并生成first
二进制可执行文件,并向您显示它使用的编译命令。请注意,要使其以合理的方式工作,您应该只有一个 first.XXX 源文件。此外,一旦你有多个源文件,你需要编写一个Makefile
,但只有一个源默认值就足够了。
要运行生成的可执行文件,请执行
./first
./
是必需的,因为在 unix 环境中,工作目录通常不在(也不应该)在 PATH 中。
哦,是的,正如其他人所提到的:不要sudo
用于这样的东西。如果你已经这样做了,你就不能以普通用户的身份修改/删除这些文件,因为它们归根用户所有。做ls -l
,它会告诉你文件的所有者。然后您可以sudo chown yourusername.yoursername file
将所有者更改file
为由yourusername
(用户和文件组)拥有。