首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android模块化(三) , 模块可插拔单独编译运行

本文是对模块化专题介绍的系列文章,包含了以下四部分:《我所理解的Android模块化(一)—概念和路由》,《我所理解的Android模块化(二)—模块通信和模块间服务调用》,《我所理解的Android模块化...(三)—模块可插拔单独编译运行》,《我所理解的Android模块化(四)—常见问题和注意事项》。...《我所理解的Android模块化(一)》;   《我所理解的Android模块化(二)》; 下面主要来讲一下单一模块的独立编译运行和插拔式的集成。...单一模块的独立编译运行 模块化的好处之一就是单一模块可以独立的开发编译运行安装到用户的手机上,这样就方便了对某一模块的单独开发调试,单一模块生成的apk体积也小,编译时间也快,开发效率会高很多。...(一)- 模块化概念和路由 Android模块化专题(二)- 模块通信和模块间服务调用 App组件化与业务拆分那些事

2.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    编译和链接

    翻译环境可以被分为两个部分:编译和链接。 而编译又可以被分为三个环节:预处理(预编译)、编译、汇编。 所以整个过程实际上也可以看成是四个环节。...链接 链接过程可以这样理解:链,指的是多个不同的文件;接,指的是将多个文件接在一起,从而生成可执行程序。链接解决的是一个项目中多文件多模块之间互相调用的问题。...这样可以确保程序正确地访问和执行各个模块之间的代码和数据。...main.o以及helper.o; 链接器会通过符号表来解析和重定位这些符号。...总的来说,链接部分在编译过程中起着将各个模块整合为一个完整可执行程序的重要作用。链接器将程序的各个部分正确地组合在一起,生成一个可以在计算机上运行的可执行文件。

    7710

    编译和链接

    其实翻译环境是由编译和链接两个大的过程组成的,而编译又可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程。...多个.c文件每个单独经过编译器,编译处理生成对应的目标文件。...链接过程主要包括:地址和空间分配,符号决议和重定位等这些步骤。 链接解决的是一个项目中多文件、多模块之间互相调用的问题。...我们在 test.c 文件中每一次使用 Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地址,但是由于每个文件是单独编译的,在编译器编译 test.c 的时候并不知道 Add...等待最后链接的时候由链接器根据引用的符号 Add 在其他模块中查找 Add 函数的地址,然后将 test.c 中所有引用到Add 的指令重新修正,让他们的目标地址为真正的 Add 函数的地址,对于全局变量

    7410

    编译和链接

    其实翻译环境是由编译和链接两个⼤的过程组成的,⽽编译⼜可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程。...• 多个.c⽂件单独经过编译出编译处理⽣产对应的⽬标⽂件。...链接过程主要包括:地址和空间分配,符号决议和重定位等这些步骤。 链接解决的是⼀个项⽬中多⽂件、多模块之间互相调⽤的问题。 ⽐如: 在⼀个C的项⽬中有2个.c⽂件( test.c ?和?...add.c ),代码如下: 链接这个阶段会做符号表的合并和重定位。 我们已经知道,每个源⽂件都是单独经过编译器处理⽣成对应的⽬标⽂件。...我们在 test.c ⽂件中每⼀次使⽤ Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地 址,但是由于每个⽂件是单独编译的,在编译器编译 test.c 的时候并不知道 Add

    6110

    编译和链接

    一、 翻译环境         翻译环境是由 编译和链接 两个大的过程组成的,而编译又可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程。         ...一个C语言的项目中可能有多个 .c 文件一起构建,那多个 .c 文件如何生成可执行程序呢  多个.c文件单独经过编译器,编译处理生成对应的目标文件。...链接过程主要包括:地址和空间分配,符号决议和重定位等这些步骤。         链接解决的是一个项目中多文件、多模块之间互相调用的问题。         ...我们在 test.c 文件中每一次使用 Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地 址,但是由于每个文件是单独编译的,在编译器编译 test.c 的时候并不知道 Add...等待最后链接的时候由 链接器根据引用的符号 Add 在其他模块中查找 Add 函数的地址,然后将 test.c 中所有引用到 Add 的指令重新修正,让他们的目标地址为真正的 Add 函数的地址,对于全局变量

    9010

    编译和链接(翻译环境:预编译+编译+汇编+链接​、运行环境)

    其实翻译环境是由编译和链接两个大的过程组成的,而编译又可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程。...多个.c文件单独经过编译出编译处理生产对应的目标文件。​  ...链接过程主要包括:地址和空间分配,符号决议和重定位等这些步骤。 链接解决的是一个项目中多文件、多模块之间互相调用的问题。...比如: 在一个C的项目中有2个.c文件( test.c 和 add.c ),代码如下:​ 我们已经知道,每个源文件都是单独经过编译器处理生成对应的目标文件。...我们在 test.c 文件中每一次使用 Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地 址,但是由于每个文件是单独编译的,在编译器编译 test.c 的时候并不知道 Add

    20710

    C语言——编译和链接

    前言 在ANSIC的任何⼀种实现中,存在两个不同的环境:编译环境和执行环境。 编译环境:C语言代码对于我们程序员来说是易于识别和理解的,但对于计算机来说就是天书。...在一个项目中可能有多个.c的源文件,多个.c文件单独经过编译器,编译处理后生成目标文件。...(在Windows环境下的目标文件的后缀是 .obj ,Linux环境下目标文件的后缀是.o) 多个目标文件和链接库一起经过链接器处理后生成可执行程序。...目标文件也是二进制形式的,它和可执行文件的格式是一样的。 编译将我们写的代码转变成二进制形式,它还要需要和系统组件(比如标准库、动态链接库等)结合起来,这些组件都是程序运行所必须的。...链接其实就是由连接器(link.exe) “ 打包” 的过程,它将所有二进制形式的目标文件和系统组件合成一个可执行文件。

    9910

    c语言编译和链接

    其实翻译环境是由编译和链接两个⼤的过程组成的,⽽编译⼜可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程。...链接过程主要包括:地址和空间分配,符号决议和重定位等这些步骤。 链接解决的是⼀个项⽬中多⽂件、多模块之间互相调⽤的问题。...⽐如: 在⼀个C的项⽬中有2个.c⽂件( test.c 和 add.c ),代码如下: 对应的test.c和add.c会被编译成一个tesst.o和一个add.o,这些都是中间文件,经过最后的链接,将几个中间文件链接成一个可执行程序...我们在 test.c ⽂件中每⼀次使⽤ Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地址,但是由于每个⽂件是单独编译的,在编译器编译 test.c 的时候并不知道 Add...等待最后链接的时候由链接器根据引⽤的符号 Add 在其他模块中查找 Add 函数的地址,然后将 test.c 中所有引⽤到 Add 的指令重新修正,让他们的⽬标地址为真正的 Add 函数的地址,对于全局变量

    7210

    C语言-编译和链接

    预处理: 预处理符号如下: __FILE__      //进行编译的源文件 __LINE__     //文件当前的行号 __DATE__    //文件被编译的日期 __TIME__    //文件被编译的时间...__STDC__    //如果编译器遵循ANSI C,其值为1,否则未定义 define定义: 举例如下: #define MAX 1000 #define reg register          ...用于调用函数和从函数返回的代码可能比实际执行这个小型计算工作所需要的时间更多。 所以宏比函数在程序的规模和速度方面更胜一筹。 2. 更为重要的是函数的参数必须声明为特定的类型。...宏的缺点: 当然和函数相比宏也有劣势的地方: 1. 每次使用宏的时候,一份宏定义的代码将插入到程序中。除非宏比较短,否则可能大幅度增加程序的长度。 2. 宏是没法调试的。 3.

    7710

    C语言--编译和链接

    ,每个源文件都会生成各自的目标文件,这个过程就叫做编译;目标文件和链接库经过链接器(link.exe)的处理就生成了可执行文件,这个过程叫做链接; 2.预处理(简介) 编译其实是分3个过程的,分别是预处理生成...标识符、字⾯量、特殊字符等); 语法分析是以表达式为节点生成语法树; 语义分析主要是进行数据类型的区分,以及数据类型的匹配; 汇编是把汇编代码转换成为机器指令,机器指令就是我们常说的二进制指令; 4.链接...解决一个项目里面多文件,多模块之间可以相互调用,进行地址和空间分配;把多个目标文件进行合并;这个时候我们就是合并相同的函数的地址(会取函数的有效地址),地址修订的过程就叫做重定位,这样不同的函数之间就可以相互调用...("%d\n", __LINE__); return 0; } 这些符号就是已经存在的,我们可以直接进行使用,第一个是打印文件的名字,第二个是创建的日期,第三个打印创建的日期,第四个是行号;这个日期和时间是文件被编译的瞬间的时间和日期...宏和函数其实是各有利弊的,概括起来,我们可以这样讲,通过前面的一些案例,我们也发现了宏和函数貌似具有一些相似的功能,我们在处理一些比较简单的问题的时候,我们可以使用宏,因为相比较于函数,宏的执行速度和效率会比函数高

    8010

    【C语言】编译和链接

    一、翻译环境和运行环境 在c语言的实现中,存在两个环境 翻译环境:在这个环境中源代码被转换成可执行的二进制指令 运行环境:实际执行代码 二、翻译环境 翻译由编译和链接两个过程组成 编译又可以分为预处理...、编译、汇编三个过程 一个c语言的项目一般是由多个.c文件一起构建的,多个.c文件通过如下步骤生成可执行程序: ①多个.c文件单独经过编译器,编译处理生成对应的目标文件 ②多个目标文件和链接库一起经过链接器处理生成最终的可执行程序...③链接库是指运行时库(支持程序运行的基本函数集合)或者第三方库 注意:在Windows环境下目标文件的后缀是.obj,Linux环境下的目标文件的后缀是.o 以下就是编译与链接的过程: 1、....i文件中不再包含宏定义,所有的宏定义已经被展开了,我们可以通过查看预处理后的.i文件来确认宏定义和头文件是否包含正确 2、编译 编译的过程就是将预处理后的文件进行语法词法的分析和优化,生成汇编代码 ①...、链接 然后就是链接,链接就是把一堆文件链接在一起生成可执行程序,它的过程主要包括:地址和空间的分配、符号决议、重定位等 重定位:当我们使用多个.c文件生成一个可执行程序的时候,由于编译的时候是每个文件单独编译的

    8810

    C语言---编译和链接

    其实翻译环境是由编译和链接两个⼤的过程组成的,⽽编译⼜可以分解成:预处理(有些书也叫预编 译)、编译、汇编三个过程。...• 多个.c⽂件单独经过编译器,编译处理⽣成对应的⽬标⽂件。...链接解决的是⼀个项⽬中多⽂件、多模块之间互相调⽤的问题 我们在add.c中写一个加法函数 在test.c中调用加法函数 我们最后要在这个阶段将两个文件的符号表进行合并 合并之后,在add.c中的加法函数的地址和...我们在 test.c ⽂件中每⼀次使⽤ Add 函数和 gval 的时候必须确切的知道 Add 和 gval 的地 址,但是由于每个⽂件是单独编译的,在编译器编译 test.c 的时候并不知道 Add...等待最后链接的时候由 链接器根据引⽤的符号 Add 在其他模块中查找 Add 函数的地址,然后将 test.c 中所有引⽤到 Add 的指令重新修正,让他们的⽬标地址为真正的 Add 函数的地址,对于全局变量

    7910

    C语言编译和链接

    其实翻译环境是由编译和链接两个⼤的过程组成的,⽽编译⼜可以分解成:预处理(有些书也叫预编 译)、编译、汇编三个过程。...多个.c⽂件单独经过编译器,编译处理⽣成对应的⽬标⽂件。 ...链接过程主要包括:地址和空间分配,符号决议和重定位等这些步骤。 链接解决的是⼀个项⽬中多⽂件、多模块之间互相调⽤的问题。...⽐如: 在⼀个C的项⽬中有2个.c⽂件( test.c 和 add.c ),代码如下: 我们已经知道,每个源⽂件都是单独经过编译器处理⽣成对应的⽬标⽂件。...等待最后链接的时候由 链接器根据引⽤的符号 Add 在其他模块中查找 Add 函数的地址,然后将 test.c 中所有引⽤到 Add 的指令重新修正,让他们的⽬标地址为真正的 Add 函数的地址,这个地址修正的过程也被叫做

    5200

    EasyC++44,单独编译

    这是EasyC++系列的第44篇,单独编译。 联合编译 在上一篇当中,我们编写好了头文件coordin.h,现在我们要完成它的实现。 头文件当中只能放一些生命和常量的定义,不能有具体的实现。...所以我们要把具体的实现单独放入一个cpp文件当中。因为我们的头文件叫做coordin.h,那么我们与之对应的cpp文件自然就叫做coordin.cpp。....o文件连接到一起编程一个可执行文件: g++ coordin.o main.o -o cur 当然,我们也可以把main.cpp的编译和连接步骤合并在一起: g++ main.cpp coordin.o...-o cur 我们单独对每个文件编译的好处是,比如当我们只需要改动main.cpp的时候,coordin.cpp文件可以不用再编译,从而节省编译运行的时间。...我们都知道,大型的C++项目的编译是非常耗时的。 当然大型项目当中,我们一般也不会手动编译项目,而会使用例如make等一些自动编译脚本。

    34110

    【C语言】编译和链接(编译环境和运行环境)

    一、翻译环境和运行环境    在 ANSI C 的任何⼀种实现中,存在两个不同的环境,如下: 翻译环境:在翻译环境中,会通过编译和链接两个大步骤,其中编译又分为了预处理(预编译)、编译和汇编,将源代码转换为可执...我们一起来学习一下    翻译环境是由编译和链接两个⼤的过程组成的,⽽编译⼜可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程,接下来我们就来学习它们 1.编译 编译要完成的就是将我们的源代码转换成可执行的机器指令...,在VS中,我们只需要按下ctrl+f5,那么VS就会一下就帮我们把编译、链接和执行这三个动作一起完成了,瞬间就可以看到结果    所以在VS中我们无法看到.c的源文件编译和链接的完整过程,这个时候我们就可以借助其它的编译器...,这里我们就简单将它们合并一下,用一个表把类似的原理讲一讲,等后期会出详细的链接过程    首先我们要知道符号的类型有哪些,如下: 全局符号(Global symbols):由当前模块定义并能被其他模块引用的符号...(指不带static的全局变量) 外部符号(External symbols):由其他模块定义,并能被当前引用的全局符号 局部符号(Local symbols):仅由当前模块定义和引用的本地符号。

    12210

    编译和链接学不懂,小代老师带你深入理解编译和链接

    其实翻译环境是由编译和链接两个⼤的过程组成的,⽽编译⼜可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程。...• 多个.c⽂件单独经过编译器,编译处理⽣成对应的⽬标⽂件。...链接过程主要包括:地址和空间分配,符号决议和重定位等这些步骤。 链接解决的是⼀个项⽬中多⽂件、多模块之间互相调⽤的问题。...我们在 test.c ⽂件中每⼀次使⽤ Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地 址,但是由于每个⽂件是单独编译的,在编译器编译 test.c 的时候并不知道 Add...等待最后链接的时候由链接器根据引⽤的符号 Add 在其他模块中查找 Add 函数的地址,然后将 test.c 中所有引⽤到Add 的指令重新修正,让他们的⽬标地址为真正的 Add 函数的地址,对于全局变量

    6910

    Linux C++编译和链接

    Linux系统中最常用的编译器是g++,这是来自Free Software Foundation的GUN C++编译器。Linux的多数版本都包含该编译器,但并不一定总会安装它。...g++编译器的工作方式很像标准UNIX编译器。...例如,下面的命令将生成可执行文件a.out g++ spiffy.cxx 有些版本可能要求来链接C++库: g++ spiffy.cxx -lg++ 要编译多个源文件,只需将它们全部放到命令行中即可:...g++ my.cxx precious.cxx 这将生成一个名为a.out的可执行文件和两个目标代码文件my.o和precious.o。...如果接下来修改了其中的某个源代码文件,如mu.cxx,则可以使用my.cxx和previous.o来重新编译: g++ my.cxx precious.o GUN编译器可以在很多平台上使用,包括基于Windows

    2.4K30
    领券