下面是我代码:
// 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'“
4条答案
按热度按时间yrdbyhpb1#
顺便说一句,共享库应该包含position independent code。
另请参见this和that答案。
并且共享对象应该(几乎)* 永远 * 没有
main
函数。PS.
gcc
的参数顺序很重要!v6ylcynt2#
输出文件的名称必须紧跟在
-o
之后。请尝试以下操作:ctrmrzij3#
我不知道你为什么要这么做。但也许是。
hmmo2u0o4#
此命令将
hello.c
直接生成到最终的二进制可执行文件中,默认名称为a.out
。使用完成执行如果要给予名称而不是
a.out
,请使用要生成hello并执行它,请使用