2

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

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

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

我在终端中输入的只是

gcc main.c
~/a.out

我应该输入哪一个?

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

4

4 回答 4

8

您正在输入

~/a.out

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

./a.out

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

希望这可以帮助!

于 2013-01-31T05:25:20.883 回答
6
gcc main.c
~/a.out

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

如果不是,请将第二行更改为

./a.out

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

于 2013-01-31T05:25:08.777 回答
2

随着您从主目录~/a.out运行二进制文件(请参阅 参考资料),这可能不是您正在编译新的.echo "$HOME"main.c

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

于 2013-01-31T05:26:17.673 回答
2

你应该使用

gcc main.c
./a.out

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

于 2013-01-31T05:26:27.747 回答