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