Android NDK构建错误。找不到libcutils.so

时间:2013-11-20 02:53:06

标签: android-ndk makefile ndk-build

我想构建expolid代码(https://github.com/revolutionary/zergRush/blob/master/zergRush.c

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := zergRush
LOCAL_SRC_FILES := zergRush.c
base :=E:\0.Android\system\core
#//base path include the android source code. but i forget the version .maybe 4.0.1
LOCAL_C_INCLUDES :=$(base)/include/
LOCAL_LDLIBS    := -llog -lcutils
LOCAL_STATIC_LIBRARIES := libcutils libc
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
LOCAL_MODULE_TAGS := eng debug
LOCAL_FORCE_STATIC_EXECUTABLE := true

include $(BUILD_EXECUTABLE)

这台电脑安装了ndk-r9b libcutils.so:D:\ android-ndk-r9b \ platforms \ android-19 \ arch-arm \ usr \ lib \ rs
所以我把它复制到D:\ android-ndk-r9b \ platforms \ android-19 \ arch-arm \ usr \ lib。

default.properties project.properties set target = 19

但是ndk-build失败了。

D:\test\roottest\jni>ndk-build
[armeabi] Compile thumb  : zergRush <= zergRush.c
[armeabi] Executable     : zergRush
D:/android-ndk-r9b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6
/../../../../arm-linux-androideabi/bin/ld.exe: error: cannot find -lcutils
D:/android-ndk-r9b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6
/../../../../arm-linux-androideabi/bin/ld.exe: D:/test/roottest//obj/local/armeabi/objs/zergRush/zergRush.o: in function
 do_fault:D:/test/roottest//jni/zergRush.c:226: error: undefined reference to 'socket_local_client'
D:/android-ndk-r9b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6
/../../../../arm-linux-androideabi/bin/ld.exe: D:/test/roottest//obj/local/armeabi/objs/zergRush/zergRush.o: in function
 main:D:/test/roottest//jni/zergRush.c:488: error: undefined reference to 'property_set'
D:/android-ndk-r9b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6
/../../../../arm-linux-androideabi/bin/ld.exe: D:/test/roottest//obj/local/armeabi/objs/zergRush/zergRush.o: in function
 main:D:/test/roottest//jni/zergRush.c:619: error: undefined reference to 'property_get'
collect2: ld returned 1 exit status
make.exe: *** [D:/test/roottest//obj/local/armeabi/zergRush] Error 1

我想知道如何包含使用定义的libraray路径或包含libcutils.so,我可以制作程序。感谢。

1 个答案:

答案 0 :(得分:0)

project.properties文件中的正确语法为target=android-19。确保你这样做。如果要确保它有效,请在Eclipse中打开项目,右键单击它并选择打开其属性。

此外,您已将libcutils列为makefile中的共享库和静态库。 libc也是Android系统中的共享库,所以我很确定你应该没有整个LOCAL_STATIC_LIBRARIES行。

如果修复目标仍然不起作用,我的建议是将libcutils.so添加为“预建”库(检查<ndk>/docs/PREBUILTS.html文件以了解如何操作)。

祝你好运!

相关问题