使用Android.mk </sys>链接到<sys msg.h =“”>的问题

时间:2011-07-27 22:47:12

标签: android-ndk message-queue

我正在编写一个用于android命令行的C程序。在我开始使用消息队列并包括 linux / msg.h (或 sys / msg.h )之前,我没有遇到任何问题。我不确定要链接的正确库是什么,甚至不知道如何使用Android.mk。我遇到了尽可能多的问题,似乎没有答案可行。

我得到的确切错误:

  • sys / msg.h:没有这样的文件或目录
  • 隐式声明函数'msgget'
  • 隐式声明函数'msgsnd'
  • 隐式声明函数'msgrcv'
  • 隐式声明函数'msgctl'

这是我的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)

我非常感谢任何帮助。

1 个答案:

答案 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的目的。