【问题标题】:how to compile static linked application using android cross compilation toolchain?如何使用android交叉编译工具链编译静态链接应用程序?
【发布时间】:2012-01-10 15:34:06
【问题描述】:

我正在尝试为 arm 设备编译 fbgrab fbgrab website

我设法使用此命令构建它

arm-linux-androideabi-gcc --sysroot=$NDK_ROOT/platforms/android-8/arch-arm/ -lz  -lm  -I../zlib -I../lpng  -W -Wall   -o fbgrab fbgrab.c ../zlib/libz.a ../lpng/libpng.a

但它是动态链接的,我现在不知道如何在设备上安装共享库

localhost:fbgrab-1.0 anatoly$ file fbgrab
fbgrab: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped

所以我需要用静态链接库来构建它 当我尝试使用 -static 选项编译失败并显示此消息 ld: cannot find -lz 尽管共享库位于指定目录中

这里有什么问题?如何构建静态链接二进制文件?或者我如何将共享库安装到设备上?

【问题讨论】:

    标签: android bash gcc android-ndk native


    【解决方案1】:

    您可以轻松安装共享库,方法是在您的项目中包含它们的源代码并使用 NDK 工具构建它们,或者包含一个预构建的共享库。也可以使用 NDK 进行静态链接。在您的 NDK 目录中查看这些文档:

    /android-ndk-r7/docs/PREBUILTS.html
    /android-ndk-r7/docs /ANDROID-MK.html

    希望对您有所帮助!

    【讨论】:

    • 感谢您的回答。最后我设法构建了我想要的东西,但发现没有办法构建完全静态的库,因为有些库只是动态链接的(如果我没记错的话是 libc libm)
    猜你喜欢
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    相关资源
    最近更新 更多