我尝试编译并执行一个c编写的程序,然后收到主题中写的错误消息。
我通过SSH登录,转到我的方法所在的目录,并使用以下命令编译:
gcc -o exec -c main.c
生成“exec”文件。然后我把权利:
chmod u+x exec
当我尝试使用./exec运行时,我收到错误消息:S ..我在这里错过了什么:S ??
答案 0 :(得分:3)
带有标志-c
的Gcc编译为一个对象,而不是编译为可运行的二进制文件。如果你想二进制,省略这个标志。
更改为:
gcc -o exec main.c
答案 1 :(得分:2)
问题是-c
选项,它告诉gcc
生成对象文件。目标文件是可以与链接器一起使用以创建最终可执行程序的文件。
所以解决方案是删除-c
选项,在这种情况下gcc
将生成一个临时目标文件(然后删除它)并在一个步骤中进行链接。或者您在编译后单独链接:
$ gcc -o main.o -c main.c
$ gcc -o exec main.o
答案 2 :(得分:0)
您应该将main.c文件编译为 gcc -o exec main.c ,因为-c选项适用于
-c编译或汇编源文件,但不链接。链接
阶段根本就没有完成。最终的输出形式是
每个源文件的目标文件。
默认情况下,源文件的目标文件名由
用.o。