Can';使用gcc链接自定义共享库

Can';使用gcc链接自定义共享库,c,gcc,linker,shared-libraries,C,Gcc,Linker,Shared Libraries,我正试图编写自己的共享库以链接到可执行文件,但无法获得。因此链接 我正在使用一个非常基本的示例来尝试让它工作。共享库(test_lib.c): 可执行文件(test.c): 按照我能找到的所有指南,我用gcc-I编译.so-fPIC-shared-o test_lib.so test_lib.c,然后是带有gcc-I的可执行文件(在同一目录中)-Ltest.c-ltest_lib 这会产生以下错误: /usr/bin/ld: cannot find -ltest_lib collect2: er

我正试图编写自己的共享库以链接到可执行文件,但无法获得
。因此
链接

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

可执行文件(
test.c
):

按照我能找到的所有指南,我用
gcc-I编译
.so
-fPIC-shared-o test_lib.so test_lib.c
,然后是带有
gcc-I的可执行文件(在同一目录中)-Ltest.c-ltest_lib

这会产生以下错误:

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

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

链接库时,通常必须将库命名为
libxxx.a |
,链接器才能找到它

编辑图书馆:

gcc -I . -fPIC -shared -o libtest.so test_lib.c
然后您可以链接到:

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

尝试编译so to
-o libtest.so
,然后链接到
-ltest
。或者也可以将全名传递给
-ltest_lib.so
,您也可以传递
-L.
。将名称更改为
libtest.so
有效,谢谢。记录在案,所以我不知道全名。我认为在这种情况下,你也必须通过这条路。无论如何,重命名它是有效的。:)
gcc -I . -fPIC -shared -o libtest.so test_lib.c
gcc -I . -L . test.c -ltest