【问题标题】:Make a library that is statically linked创建一个静态链接的库
【发布时间】:2013-07-07 20:17:52
【问题描述】:

所以,我已经在我的 Android 手机上安装了 Ubuntu(但仍然使用 Android 内核),目的是使用它为使用 glibc 的设备编译本机代码。

我创建了一个库,我打算使用 JNI 在我想要制作的应用程序中使用它,但我正在使用数学库。我的问题是:

有没有办法将这些库包含到我的库中 创建以便我的手机可以使用 glibc 库而不是 仿生(这是 NDK 使用的)库?

注意:我尝试制作一个使用库和静态链接的测试程序,以确保编译后的代码可以在 android OS 而不仅仅是 Ubuntu 上运行,我得出的结论是:) 所以任何与我的问题有关的答案将是一个很大的帮助。

【问题讨论】:

    标签: android c static-libraries


    【解决方案1】:

    您可以使用ar 从任何.a 文件中提取原始.o 文件:

    ar x libm.a
    

    然后您可以选择您喜欢的任何 .o 文件并将它们链接到您自己的代码中。

    .a 库文件可以被视为具有额外符号索引功能的 tar 文件(虽然我不知道内部结构有多相似)。

    警告:通常,您只能在主应用程序中使用 static 库中的 .o 文件。如果您尝试将它们链接到共享库(.so 文件),您可能会很不走运。 .o 文件需要使用 -fPIC 创建才能正常工作,而静态库通常不是这种情况。

    【讨论】:

    • 所以我也可以使用官方 glibc 库来做到这一点?
    • 嗯,我刚刚在答案中对该语句添加了一个警告。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    相关资源
    最近更新 更多