终端不会使用更新的a.out,我该如何解决?

时间:2013-01-31 05:23:32

标签: c macos unix terminal

我正在我的mac上编译终端上的C文件,但是当我运行a.out文件时,它只会编译我的文件的旧版本。

例如,假设我的C文件打印出“Hello,World!”,我使用gcc编译它并运行a.out文件,a.out文件将打印出“Hello,World! ”

如果我然后更改C文件以打印出“Goodbye”,编译它然后运行a.out文件,终端仍将打印出“Hello,World”。有谁知道如何解决这个问题?

我在终端输入的所有内容都是

gcc main.c
~/a.out

我应该输入的是什么?

如果我没有说清楚的话,请告诉我。 谢谢!

4 个答案:

答案 0 :(得分:7)

您正在输入

~/a.out

这意味着“从主目录运行a.out程序。”我想你要输入

./a.out

这意味着“从当前目录运行a.out程序。”如果您使用gcc,新创建的程序将被放入当前目录(除非您在主目录中,它不是同一个地方),因此新版本将运行正确的程序

希望这有帮助!

答案 1 :(得分:6)

gcc main.c
~/a.out

第一行将编译到当前目录中的a.out,而第二行将从HOME目录执行a.out。你在你的主目录吗?

如果没有,请将第二行更改为

./a.out

.表示当前目录。所以./a.out表示在我当前目录中执行a.out文件。

答案 2 :(得分:2)

使用~/a.out您的主目录运行二进制文件(请参阅echo "$HOME"),这可能不是您正在编译新main.c的二进制文件}。

试试这个:./a.out(从当前目录运行)。

答案 3 :(得分:2)

你应该使用

gcc main.c
./a.out

注意.(当前目录)而不是~(主目录)。 gcc命令在编译代码时会将a.out写入当前目录,该代码不一定是主目录。