无法使用gcc48编译我的C文件

无法使用gcc48编译我的C文件,c,gcc,freebsd,C,Gcc,Freebsd,我正在用FreeBSD操作系统在我的新virtualBox上编译一些C程序 我已经安装了gcc48 我正在尝试编译此基本程序(另存为hello.c): 输入此命令后,我得到以下错误: hello.c:1:2: error: invalid preprocessing directive #! #!/usr/local/bin/ ^ ./hi: Exec format error. Binary file not executable. 我已通过执行以下命令确认bash目录位于正确的位置

我正在用FreeBSD操作系统在我的新virtualBox上编译一些C程序

我已经安装了gcc48

我正在尝试编译此基本程序(另存为hello.c):

输入此命令后,我得到以下错误:

hello.c:1:2: error: invalid preprocessing directive #!
 #!/usr/local/bin/
  ^
./hi: Exec format error. Binary file not executable.
我已通过执行以下命令确认bash目录位于正确的位置:

find /* -iname "bash"
结果如下:

/usr/local/share/doc/bash
/usr/local/bin/bash
/usr/ports/shells/bash
因此,我不明白为什么我得到一个无效的预处理指令错误

旁注:

如果我拆下#!行并编译,它成功编译并输出名为“hi”的文件

但是,如果我尝试使用./hi运行此文件,则会出现以下错误:

hello.c:1:2: error: invalid preprocessing directive #!
 #!/usr/local/bin/
  ^
./hi: Exec format error. Binary file not executable.
有人能帮我吗


谢谢

好的。MichaelPetch是最接近的答案,但是@amdixon的想法起了作用

因此,我删除了#!行、保存和编译(不包括-c) 你好,c-o你好

这是成功编译的

和./hi一起跑步也在工作

谢谢

删除此行:

#!/usr/local/bin/

这是针对shell脚本而不是c

不要为C++问题添加C++标签!那你认为Shebang有什么好处?什么是gcc48?你是说gcc-4.8?从阅读一本C语言书开始。阅读错误消息。它告诉你们到底是怎么回事。@amdixon你们这些人根本没读过我的帖子!我已经试着把#!我告诉过你我得到的错误…
gcc48-c hello.c-o hi
使用
-c
选项将c文件编译成目标文件(不是二进制可执行文件)。尝试
gcc48 hello.c-o hi
。这是假设您删除了错误的行
#/usr/local/bin/
从C文件中删除。请参阅我的更新,我假设您删除了错误的行
#/usr/local/bin/
。这是无效的C.C文件不能作为脚本运行。如果要创建名为
hi
的可执行文件,还必须从gcc48命令中删除
-c
。使用
-c
可以将c文件编译为名为
hi
的对象文件。对象文件通常使用
.o
后缀。这只是问题的一部分。是的,我还需要在编译时不使用-cI,我想你应该向@Olaf道歉。他是一个非常博学的人,他建议读一本“C”字的书是正确的,关于“Shebang”(#!)。要求他阅读FREEBSD手册就像要求教皇阅读国王詹姆的《圣经》。如果你将来想得到帮助,我就发表这一评论。提供帮助和帮助的人可能不会善待这一点。奥拉夫是一名志愿者。迈克尔·佩奇:我不欠任何人一个道歉。@MichaelPetch King James,教皇阅读圣经的差劲选择:-)@MichaelPetch-我不欠任何人一个道歉。。。。我感谢那些善良的人,他们的反应很好,没有讽刺和傲慢,实际上帮助我解决了这个简单的问题。我读过一本C语言的书,我会用C语言编程,我只是习惯于使用GUI编译器,而不是命令行。