我正在我的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
我应该输入的是什么?
如果我没有说清楚的话,请告诉我。 谢谢!
答案 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写入当前目录,该代码不一定是主目录。