我最近参与了Debian,并希望开始将我的代码从visual studio翻译成vim / make / G ++。

我正在运行Debian wheezy并安装了G ++ 4.7.2(与debian一起使用,无法更改它 - 下载配额不够)。 我创建了一个文件main.cpp并将以下内容放入其中:

#include <iostream>

int main(){
    std::cout << "hello world" << std::endl;
    return 0;
}

cd “d到该文件的目录,并运行g++ main.cpp -o hello ,这并没有产生任何错误或输出。 然后,当我输入. hello . hello我得到这个错误:

bash:。:hello:无法执行二进制文件

我试过运行chmod 777 hello认为这可能是一个权限问题,但这也没有帮助。 我想我可能无意中生成了一个目标文件,但我不知道怎么检查..

===============>>#1 票数:8 已采纳

. hello

告诉bash shell中运行hello在当前程序的环境脚本 (即,它会尝试脚本),这就是为什么bash是给你一个错误。 你想要执行的方法:

./hello

这不是真正bash告诉你,你的文件是不可执行的,而它的告诉你它无法解释的二进制文件的脚本。 chmod与此无关,因为gcc工具链中成功生成的可执行文件已经可执行。

有关bash sourcing的更多详细信息,请参见手册页,以下复制的相关部分:

. filename [arguments]
source filename [arguments]

在当前shell环境中从filename读取并执行命令,并返回从filename执行的最后一个命令的退出状态。

如果filename不包含斜杠,则使用PATH中的文件名来查找包含filename的目录。

在PATH中搜索的文件不需要是可执行的。 当bash不处于posix模式时,如果在PATH中找不到文件,则搜索当前目录。

如果关闭shopt内置命令的sourcepath选项,则不搜索PATH。

如果提供了任何参数,则在执行文件名时它们将成为位置参数。 否则,位置参数不变。

返回状态是脚本中退出的最后一个命令的状态(如果没有执行命令,则为0),如果未找到或无法读取文件名,则返回false。

  ask by quant translate from so

未解决问题?本站智能推荐: