我正在编写一个用于android命令行的C程序。在我开始使用消息队列并包括 linux / msg.h (或 sys / msg.h )之前,我没有遇到任何问题。我不确定要链接的正确库是什么,甚至不知道如何使用Android.mk。我遇到了尽可能多的问题,似乎没有答案可行。
我得到的确切错误:
这是我的Android.mk文件:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := appX.c
LOCAL_MODULE := appX
LOCAL_MODULE_TAGS := optional
LOCAL_STATIC_LIBRARIES := libc
LOCAL_C_INCLUDES := $(LOCAL_PATH)
include $(BUILD_EXECUTABLE)
我非常感谢任何帮助。
答案 0 :(得分:3)
$(NDK_ROOT)/ platforms / android- [X] / usr / include中的NDK标头是NDK支持的唯一标头。如果您使用其他Android或Linux标头,您的应用可能会在将来中断。
这是为什么?由于大多数Android应用程序在Dalvik虚拟机中运行,并且通过多层Java框架类与系统隔离,因此Android作者可以对底层Linux系统保持相当自信。只要他们保持Java层兼容,他们就可以随意更改标头和库。 NDK也是如此:只要它们不破坏NDK提供的非常有限的标题和库集,它们就可以改变他们想要改变的内容。
因此,通过设计,NDK make系统无法轻松链接到除NDK库之外的任何内容。如果它能够轻松地与随机Linux标题进行对话,那么它将无法实现NDK的目的。