无法 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
我正在尝试将我自己的共享库 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