无法 link 使用 gcc 自定义共享库

Can't link custom shared library with gcc

我正在尝试将我自己的共享库 link 写入可执行文件,但无法将 .so 写入 link。

我正在使用一个非常基本的示例来尝试让它工作。共享库 (test_lib.c):

#include "test_lib.h" //stdlib includes and function prototype

char *hello(void)   {
    char *c = malloc(100);
    memcpy(c, "hello\n", 7);
    return c;
}

可执行文件(test.c):

#include "test_lib.h"

int main()  {
    printf("%s", hello());
    return 0;
}

按照我能找到的所有指南,我用 gcc -I . -fPIC -shared -o test_lib.so test_lib.c 编译 .so,然后用 gcc -I . -L . test.c -ltest_lib

编译可执行文件(在同一目录中)

这给出了错误:

/usr/bin/ld: cannot find -ltest_lib
collect2: error: ld returned 1 exit status

据我所知,包括通过 -L 标志的路径应该告诉 gcc 在哪里可以找到 .so,但这不起作用。我在这里错过了什么?

当 link 访问一个库时,通常必须将库命名为 libxxx.a|so 以便 link 用户找到它。

正在编译库:

gcc -I . -fPIC -shared -o libtest.so test_lib.c

然后你可以link:

gcc -I . -L . test.c -ltest