无法在solaris系统上执行二进制文件 - 通过ssh

时间:2014-08-20 11:32:48

标签: c

我尝试编译并执行一个c编写的程序,然后收到主题中写的错误消息。

我通过SSH登录,转到我的方法所在的目录,并使用以下命令编译:

gcc -o exec -c main.c

生成“exec”文件。然后我把权利:

chmod u+x exec

当我尝试使用./exec运行时,我收到错误消息:S ..我在这里错过了什么:S ??

3 个答案:

答案 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。

替换后缀.c,.i,.s等