重庆生活网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 生活 重庆
查看: 1262|回复: 0
打印 上一主题 下一主题

芯灵思开发板安卓底层开发学习经验第五期

[复制链接]
跳转到指定楼层
楼主
发表于 2020-3-25 20:08:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    最近在学习安卓,我所使用的是芯灵思的开发板,核心板是全志的A31S,感觉首先呢,我们需要配置我们的环境变量.build/envsetup.sh,现在呢LOCAL_SRC_FILES包含两个文件,一个是src/main现在我们想将test2.c也加入到我们的工程当中,我们找到我们的Andr如果我们后边还想添加test3.c或者更多,那么每当我们添加一个文件都需有黄色部分呢就是我们的函数,我们来看一下他所实现的功能,进入我们的LOC我们想要创建一个test1,首先打开test文件,将test文件从LOC我们可以看到他生成了一个test1,然后我们使用touch命令把我们的文首先我们先将代码拷贝一份,我们将名字改成libtest,然后将源文件改成




最近在學习安卓,我所使用的是芯靈思的开发板,核心板是全志的A31S,感觉性能挺好,而且老板还給了很多的资料,而且還帶學习的视频,下面是我在學习完第五期之后的一个经验,希望能跟大家分享一下,也希望各位大神能多多的幫助小弟,小弟在此谢过了。有興趣的朋友可以去芯灵思官網看一下。
这一期我们還是继续來学习Android.mk,下面我们来思考几個问题:
[size=10.5000pt]1.如果说我们一个工程下面有多个源碼文件,我们要如何把这些源碼文件統一的做个管理,一起来进行编译呢?
[size=10.5000pt]2.我們如何在一個.mk文件中编译多个目标文件?
[size=10.5000pt]3.如何编譯生成一个动态库和静态库
我们要將工程下的源碼文件添加到变量中,我们有兩种形式:
[size=10.5000pt]1.我們要将每一个文件添加到Android.mk中(需手动添加),下面我们来做个练习
首先呢,我们需要配置我们的环境变量.build/envsetup.sh,然后选择我们的lunch 19,这個一般都是固定的,我们的源码是在external/test/目录下

   


然后我們对external/test/做一個编译,这個編译把mAIn.c和test1.c都编译完成了

   


然后我們来看一下我们的Android.mk   vi external/test/Android.mk
现在呢LOCAL_SRC_FILES包含两个文件,一个是src/main.c一個是src/test1.c ,然后进入我们这个工程cd external/test/然后进入我们的src目录,然后我们将test1.c拷貝到test2.c

   


我们进入text2.c我们将它改一下,进去之后將call_1(void)改成call_2(void)
现在我们想將test2.c也加入到我们的工程当中,我们找到我们的Android.mk,打開它,将test2.c添加到LOCAL_SRC_FILES中

   


这樣我們就完成了main.c 、test1.c 、test2.c的修改,然后我們用mm进行編譯,这样就把test2.c也进行了编译

   


如果我们后边还想添加test3.c 或者更多,那么每当我們添加一个文件都需要手工的去修改一下Android.mk,这样就会显得特別不方便,那么现在就会用到我们所說的第二种方式


[size=10.5000pt]2.使用系统提供的函数进行处理
退回到我们的根目录,打開我们的Android.mk   vi external/test/Android.mk
然后我們用sp命令打开build/core/definitions.mk,我们来查找一个all-c

   
有黄色部分呢就是我们的函數,我们來看一下他所实现的功能,進入我们的LOCAL_PATH,然后找到我们的所有.c文件,这样就能得到当前目录下的所有.c文件,我们再来把我們的代码改一下,首先添加一个变量,LOCAL_C_ALL_FILES,然后我们需要调用一个函数,我们可以根据第一行那个函数调用我们所查找的那个函數,然后我们将我们所查找到的所有.c文件给我们的LOCAL_SRC_FILES

   


最后我们切到后台用mmm命令进行编译, mmm external/test/  
我们可以看到,我們的main.c,test1.c,test2.c全部进行了编譯

   
下面我們来驗证一下我們所做的是否正确
我们将test1.c拷贝到test3.c里面,将test3.c改一下,直接将call_1改成call_3再進行编譯

   



   
这样就可以直接將test3.c編译进来了,我们就不用去修改我们的Android.mk,这样呢就比我们單个添加方便很多了
下面我們来看一下如何在一个文件中來创建兩个目标文件
我们想要创建一个test1,首先打開test文件,将test文件从LOCAL_PATH以下进行拷贝,將test改成test1,LOCAL_PATH保持不變

   
然后我们再来进行編译,mmm external/test/

   


我們可以看到他生成了一个test1,然后我们使用touch命令把我们的文件都更新一下touch external/test/src/*  然后我們在执行编译命令这样我们就看到生成了两個文件一个test一個test1文件,这就是在一个文件中生成两個目标文件的过程

   


接下来我们来学习一下如何编译生成动態库和静态库
首先我们先将代码拷贝一份,我们将名字改成libtest ,然后將源文件改成test目录下的src/test1.c和test2.c ,生成目录不变,我们只需要把生成的類型换成BUILE_SHARED_LIBRARY或者BUILD_STATIC_LIBRARY然后我们在进行编译,这样就在目录下生成了我们所需要的动态库或者静态库

   



   
上面呢就是我在第五期视頻上学到的一些东西,希望对想學安卓的朋友有一定的帮助。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|联系我们|重庆生活网

GMT+8, 2024-4-30 14:55 , Processed in 0.265625 second(s), 17 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表