2014-06-19 44 views
1

我试图建立在Windows静态链接的android系统库,我用下面的命令执行:如何通过Ndk-build静态构建可执行文件?

%NDK_PATH%\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin\arm-linux-androideabi-gcc.exe jni\main.c -o main --sysroot=%NDK_PATH%\platforms\android-9\arch-arm -static 

有时可能需要添加选项:

-static-libgcc -static-libstdc++ -std=gnu99 

输出文件是建立后我想要什么。
但是,如果我想生成可执行文件使用JNI \ Android.mkJNI \ Application.mk通过NDK-建立,该选项:

-static -static-libgcc -static-libstdc++ -std=gnu99 

我应该追加和。 mk文件我应该选择吗?
我尝试添加:

LOCAL_CFLAGS := -static 

JNI \ Andorid.mk,但输出不会改变。如何解决.mk问题?

+0

'-static-libstd ++'与C99无关,不是吗? –

+0

实际上只需要**' - static'** – Hung

回答

4

您可以在Android.mk

LOCAL_LDFLAGS := -static 

结果使用不相同的简单GCC一个内胆,但ARM-Linux的androideabi纳米没有报告动态符号对我来说。

+0

我试着将该选项添加到我的Android.mk中,它工作正常。但它会导致一些关于** ld **的链接器错误:它不能链接到某些函数,如:** dlopen **,** dlsym **。我无法从** ndk **找到libld.a,我应该通过** Android Bionic **创建一个libld.a吗? – Hung

+0

不知道有关'libdl.a'。 'NDK的一部分libdl.so'有什么问题? –

+0

** libdl.so **没问题。但我只想使用**。a **。也许我应该找到一些方法来构建libdl.a或找到一些替代函数。 – Hung

相关问题