无法使用gcc48编译我的C文件
我正在用FreeBSD操作系统在我的新virtualBox上编译一些C程序 我已经安装了gcc48 我正在尝试编译此基本程序(另存为hello.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目录位于正确的位置
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编译器,而不是命令行。