我正在尝试使用自定义库进行编译,目的是使用一个函数。在我的示例中,此函数是测试,它位于库中 mylibrary.so
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* message = "test";
test(message);
exit(0);
}
我尝试使用以下方法进行编译:
$ gcc -Wimplicit-function-declaration hack.c -o hack
hack.c: In function 'main':
hack.c:11:2: warning: implicit declaration of function 'test' [-Wimplicit-function-declaration]
test(message);
^~~~~~~~~~~
/tmp/ccImBtlh.o: In function `main':
hack.c:(.text+0x2c): undefined reference to `test'
collect2: error: ld returned 1 exit status
此外,如果我将自定义库添加到链接器。我有更多错误。
$ gcc -L/home/user/my/path/ -lmylibrary hack.c -o hack
hack.c: In function 'main':
hack.c:11:2: warning: implicit declaration of function 'test' [-Wimplicit-function-declaration]
test(message);
^~~~~~~~~~~
/usr/bin/ld: warning: liblog.so, needed by /home/user/my/path/libmylibrary.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libc.so, needed by /home/user/my/path/libmylibrary.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libstdc++.so, needed by /home/user/my/path/libmylibrary.so, not found (try using -rpath or -rpath-link)
/home/user/my/path/libmylibrary.so: undefined reference to `getpid@LIBC'
/home/user/my/path/libmylibrary.so: undefined reference to `iscntrl@LIBC'
/home/user/my/path/libmylibrary.so: undefined reference to `tolower@LIBC'
/home/user/my/path/libmylibrary.so: undefined reference to `sleep@LIBC'
...
另外,我试图使用另一个libc,但我仍然遇到同样的问题。
我想知道如何使用自定义库的功能(mylibrary.so)。
修改 添加更多信息:这是一个android apk使用的库,我试图在另一个ARM设备中使用。所以,我认为我的问题在于mylibrary.so正在使用的libc。