Android.Mk规则来创建文件.O从许多文件.txt,然后链接到其他文件.O从files.cpp生成



我正在将用c++编写的调制解调器连接管理器从linux移植到gingerbread。这并不是一个带有"gui"的"应用程序",我将使用带有NDK的java包装器,而是一个在启动时从"init.rc"调用的服务。我在build/core/下发现了一些与android构建系统相关的不更新的文档。在那里你可以找到一些解释Android构建系统基础知识的html文件和一些"文件"。这是一些常见情况下的模板,如创建c++可执行文件,静态库,共享库等。

我把我的树和所有的源代码放在外部/myservice下,它意味着与Android本身同时编译。(我已经将内核移植到我的平台上,它可以工作,只剩下调制解调器)

在Android的子文件夹中。mk文件,我有一堆"。cpp"文件与变量LOCAL_SRC_FILES列出:= cppfile1.cpp cppfile2.cpp ....这将生成cppfile1。o cppfile2。阿……

我需要链接那些cppfile*。O使用objfile。O来形成一个libfile.so。我找到了如何生成libfile的规则。从一堆文件中。

事情变得复杂的地方,是移植"linux makefile"命令来创建objfile.o。下面是

的样子
$(LD) $(LDFLAGS) -r -b binary -o QMIDB.o   
            QMI/Entity.txt   
            QMI/EnumEntry.txt   
            QMI/Enum.txt   
            QMI/Field.txt   
            QMI/Struct.txt  

这意味着它是一个链接器的工作,合并一堆文本文件,使objfile.o。这个文件只是一堆初始化的数据结构,里面没有代码可执行但是用文本编辑器查看所有的文件。txt是很难看的。

我不知道如何将其集成到Android中。可文件。怎样才能做到呢?我甚至希望你能告诉我在哪里可以找到更多的信息。找到关于构建Android应用程序的信息很容易,但找到任何更接近Android/Kernel本身的信息是另一回事。

可以从mk. file文件中轻松获取so文件....

如果你使用windows平台从你的本地代码生成so文件,你需要使用android Ndk setup和cygwin setup。

首先安装并放置ndk到一个位置…

然后安装cygwin setup,而不是默认的一个,检查安装过程中的所有功能(如果是linux终端),因为ndk-build命令可以从linux终端识别。

现在从您的cygwin终端访问您的项目文件夹jni文件。

http://developer.android.com/sdk/ndk/index.html

使用以下参考如何从cygwin终端运行ndk-build命令..

现在提供ndk的完整路径我们使用ndk-build命令…

编译后的代码为我们的项目生成。so文件…

现在我们正在使用的系统。Loadlibrary命令来使用so文件,也就是说我们的本地代码现在可以使用了。

注意,要从mk中获取so文件,我们需要使用ndk setup来完成。我们不能直接复制粘贴的文件来运行我们的本地代码。此外,我们使用的是windows平台,我们需要使用cygwin设置

最新更新