首页 > 解决方案 > 为什么“./a.out”只运行最后编译的可执行程序而不运行以前的可执行程序?

问题描述

我已经学习了我的前两门 Java 课程,现在必须学习 C++ 中的数据结构。我正在尝试打开我编译的不同文件。

他们只是两个“你好,世界!” 文本略有不同的程序。

当我输入:

g++ HelloWorld.cpp

我通过在命令提示符中键入 ./a.out 来创建文件“a.out”。

现在我编译了第二个可执行程序 HelloWorldII.cpp,a.out 文件只运行该程序。

当我尝试运行 ./HelloWorld.cpp 时,我的权限被拒绝,所以我输入:

sudo chmod 744 /Users/username/HelloWorld

为了让我成为不起作用的文件夹的所有者,所以我输入了:

sudo chown -R "$garyjones:" users/username/HelloWorld

授予所有者(我)编辑/打开的权限,之后当我尝试运行 ./HelloWorld.cpp 时,终端开始尝试执行它,但即使使用 g++ HelloWorld.cpp 编译它们并运行它们,也会向我显示语法错误他们的 a.out 文件运行良好。

如果我在一个文件夹中有多个可执行文件,如何打开我想要的那个?

标签: c++

解决方案


当您编译和链接代码时,可执行文件默认命名a.out- 您应该在链接中添加一个参数来命名它。

如果你不这样做,它们都将被命名a.out,并且当然会相互覆盖 - 只能有一个具有该名称的文件。


推荐阅读