使用库中的函数进行编译

时间:2017-11-07 11:44:45

标签: c gcc compilation arm

我正在尝试使用自定义库进行编译,目的是使用一个函数。在我的示例中,此函数是测试,它位于库中 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。

0 个答案:

没有答案