gcc:错误:libhello.so:没有这样的文件或目录

oo7oh9g9  于 2023-03-17  发布在  其他
关注(0)|答案(4)|浏览(188)

下面是我代码:

// hello.c
#include<stdio.h>

int main(int argc, char **argv) {
    return (0);
}

我在终端中键入gcc hello.c -o -shared libhello.so,并得到:

gcc: error: libhello.so: No such file or directory

问题:如何使用一个命令行将.c文件编译为.so文件
**更新:**如果我用gcc hello.c -shared -o libhello.so修复它,但我只是有些困惑,为什么错误消息是“gcc:错误:libhello.so:没有这样的文件或目录”,而不是“gcc:错误代码:没有这样的文件或目录'-shared'“

yrdbyhpb

yrdbyhpb1#

顺便说一句,共享库应该包含position independent code

gcc  -Wall -fPIC -shared -O -g hello.c -o libhello.so

另请参见thisthat答案。
并且共享对象应该(几乎)* 永远 * 没有main函数。
PS. gcc的参数顺序很重要!

v6ylcynt

v6ylcynt2#

输出文件的名称必须紧跟在-o之后。请尝试以下操作:

gcc hello.c -shared -o libhello.so
ctrmrzij

ctrmrzij3#

我不知道你为什么要这么做。但也许是。

hmmo2u0o

hmmo2u0o4#

gcc hello.c

此命令将hello.c直接生成到最终的二进制可执行文件中,默认名称为a.out。使用完成执行

. /a

如果要给予名称而不是a.out,请使用

gcc -o hello hello.c

要生成hello并执行它,请使用

. /hello

相关问题