当前位置:首页 » 编程软件 » 源码编译过程包括哪些

源码编译过程包括哪些

发布时间: 2023-06-08 11:38:51

⑴ 自己可以编译安卓源码

用最新的Ubuntu 16.04,请首先确保自己已经安装了Git.没安装的同学可以通过以下命令进行安装:

sudo apt-get install git git config –global user.email “[email protected]” git config –global user.name “test”

其中[email protected]为你自己的邮箱.

简要说明

android源码编译的四个流程:1.源码下载;2.构建编译环境;3.编译源码;4运行.下文也将按照该流程讲述.

源码下载

由于某墙的原因,这里我们采用国内的镜像源进行下载.
目前,可用的镜像源一般是科大和清华的,具体使用差不多,这里我选择清华大学镜像进行说明.(参考:科大源,清华源)

repo工具下载及安装

通过执行以下命令实现repo工具的下载和安装

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

补充说明
这里,我来简单的介绍下repo工具,我们知道AOSP项目由不同的子项目组成,为了方便进行管理,Google采用Git对AOSP项目进行多仓库管理.在聊repo工具之前,我先带你来聊聊多仓库项目:

我们有个非常庞大的项目Pre,该项目由很多个子项目R1,R2,...Rn等组成,为了方便管理和协同开发,我们为每个子项目创立自己的仓库,整个项目的结构如下:


这里写图片描述

执行完该命令后,再使用make命令继续编译.某些情况下,当你执行jack-admin kill-server时可能提示你命令不存在,此时去你去out/host/linux-x86/bin/目录下会发现不存在jack-admin文件.如果我是你,我就会重新repo sync下,然后从头来过.

错误三:使用emulator时,虚拟机停在黑屏界面,点击无任何响应.此时,可能是kerner内核问题,解决方法如下:
执行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通过使用kernel-qemu-armv7内核 解决模拟器等待黑屏问题.而-partition-size 1024 则是解决警告: system partion siez adjusted to match image file (163 MB >66 MB)

    如果你一开始编译的版本是aosp_arm-eng,使用上述命令仍然不能解决等待黑屏问题时,不妨编译aosp_arm64-eng试试.

    结束吧

    到现在为止,你已经了解了整个android编译的流程.除此之外,我也简单的说明android源码的多仓库管理机制.下面,不妨自己动手尝试一下.

    ⑵ 编译程序的各阶段都涉及到什么

    预处理,词法分析,文法分析,生成中间代码,生成目标代码。

    1、预处理:导入源程序并保存(C文件)。

    2、编译:将源程序转换为目标文件(Obj文件)。

    3、链接:将目标文件生成为可执行文件(EXE文件)。



    (2)源码编译过程包括哪些扩展阅读:

    c语言代码分为程序的几个阶段:

    首先,源代码文件测试。以及相关的头文件,比如stdio。H、由预处理器CPP预处理为.I文件。预编译的。

    编译过程是对预处理文件进行词法分析、语法分析、语义分析和优化,生成相应的汇编代码文件。这个过程往往是整个程序的核心部分。

    ⑶ 开发一个c语言程序要经过哪四个步骤

    开发一个C语言程序需要经过的四个步骤:编辑、编译、连接、运行。

    C语言程序可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C源代码编译、连接成目标二进制文件之后即可运行。

    1、预处理:输入源程序并保存(.C文件)。

    2、编译:将源程序翻译为目标文件(.OBJ文件)。

    3、链接:将目标文件生成可执行文件( .EXE文件)。

    4、运行:执行.EXE文件,得到运行结果。

    (3)源码编译过程包括哪些扩展阅读:

    C语言代码变为程序的几个阶段:

    1、首先是源代码文件test.c和相关的头文件,如stdio.h等被预处理器cpp预处理成一个.i文件。经过预编译后的.i文件不包含任何宏定义,因为所有的宏已经被展开,并且包含的文件也已经被插入到.i文件中。

    2、编译过程就是把预处理完的文件进行一系列的词法分析、语法分析、语义分析以及优化后产生相应的汇编代码文件,这个过程往往是我们所说的整个程序的构建的核心部分,也是最复杂的部分之一。

    3、汇编器不直接输出可执行文件而是输出一个目标文件,汇编器可以调用ld产生一个能够运行的可执行程序。即需要将一大堆文件链接起来才可以得到“a.out”,即最终的可执行文件。

    4、在链接过程中,对其他定义在目标文件中的函数调用的指令需要被重新调整,对实用其他定义在其他目标文件的变量来说,也存在同样问题。

    参考资料来源:网络-c语言

    java语言的编译过程与一般编程语言的编译过程有何不同

    1. Java代码编译和执行的整个过程包含了以下三个重要的机制:

    Java源码编译机制

    类加载机制

    类执行机制

    • Java源码编译机制

    Java源码编译由以下三个过程组成:

    分析和输入到符号表

    注解处理

    语义分析和生成class文件


    • JVM的类加载是通过ClassLoader及其子类来完成的

    • JVM是基于栈的体系结构来执行class字节码的。线程创建后,都会产生程序计数器(PC)和栈(Stack),程序计数器存放下一条要执行的指令在方
      法内的偏移量,栈中存放一个个栈帧,每个栈帧对应着每个方法的每次调用,而栈帧又是有局部变量区和操作数栈两部分组成,局部变量区用于存放方法中的局部变
      量和参数,操作数栈中用于存放方法执行过程中产生的中间结果

    ⑸ 简述将源程序编译成可执行程序的过程

    一个源程序到一个可执行程序的过程:预编译、编译、汇编、链接。其中,编译是主要部分,其中又分为六个部分:词法分析、语法分析、语义分析、中间代码生成、目标代码生成和优化。

    预编译:主要处理源代码文件中的以“#”开头的预编译指令。处理规则如下:

    1、删除所有的#define,展开所有的宏定义。

    2、处理所有的条件预编译指令,如“#if”、“#endif”、“#ifdef”、“#elif”和“#else”。

    3、处理“#include”预编译指令,将文件内容替换到它的位置,这个过程是递归进行的,文件中包含其他文件。

    4、删除所有的注释,“//”和“/**/”。

    5、保留所有的#pragma 编译器指令,编译器需要用到他们,如:#pragma once 是为了防止有文件被重复引用。

    6、添加行号和文件标识,便于编译时编译器产生调试用的行号信息,和编译时产生编译错误或警告是能够显示行号。

    (5)源码编译过程包括哪些扩展阅读:

    编译过程中语法分析器只是完成了对表达式语法层面的分析,语义分析器则对表达式是否有意义进行判断,其分析的语义是静态语义——在编译期能分期的语义,相对应的动态语义是在运行期才能确定的语义。

    其中,静态语义通常包括:声明和类型的匹配,类型的转换,那么语义分析就会对这些方面进行检查,例如将一个int型赋值给int*型时,语义分析程序会发现这个类型不匹配,编译器就会报错。

    ⑹ C语言源程序到运行程序经过哪几个步骤

    1、预处理

    在这一阶段,源码中的所有预处理语句得到处理,例如:#include语句所包含的文件内容替换掉语句本身,所有已定义的宏被展开。

    根据#ifdef,#if等语句的条件是否成立取舍相应的部分,预处理之后源码中不再包含任何预处理语句。

    GCC预处理阶段可以生成.i的文件,通过选项-E可以使编译器在预处理结束时就停止编译。例如:gcc -E -o hello.i hello.c

    2、编译

    这一阶段,编译器对源码进行词法分析、语法分析、优化等操作,最后生成汇编代码。这是整个过程中最重要的一步,因此也常把整个过程称为编译。

    可以通过选项-S使GCC在进行完编译后停止,生成.s的汇编程序。例如:gcc -S -o hello.s hello.c

    3、汇编

    这一阶段使用汇编器对汇编代码进行处理,生成机器语言代码,保存在后缀为.o的目标文件中。

    当程序由多个代码文件构成时,每个文件都要先完成汇编工作,生成.o目标文件后,才能进入下一步的链接工作。

    目标文件已经是最终程序的某一部分了,只是在链接之前还不能执行。可以通过-c选项生成目标文件:gcc -c -o hello.o hello.c

    4、链接

    经过汇编以后的机器代码还不能直接运行。为了使操作系统能够正确加载可执行文件,文件中必须包含固定格式的信息头,还必须与系统提供的启动代码链接起来才能正常运行,这些工作都是由链接器来完成的。gcc -o hello hello.c

    5、运行:执行.EXE文件,得到运行结果。

    ⑺ 源码怎么编译

    使用编译器如VC++6.0,VC++2008

    ⑻ 如何编译C语言源代码

    下载一个VC2005软件,把代码复制到里面,设置好C运行环境,点击编译,OK,然后点击那个感叹号,直接链接运行,就OK了。

    ⑼ c语言程序编译过程包括哪四个

    C语言编译过程分成四个步骤: 
    1,由.c文件到.i文件,这个过程叫预处理 
    2,由.i文件到.s文件,这个过程叫编译 
    3,由.s文件到.o文件,这个过程叫汇编 
    4,由.o文件到可执行文件,这个过程叫链接
    用gcc查看预处理过程(假设源文件叫hello.c) 
    gcc -o hello.i hello.c -E 
    然后用 vi hello.i 即可查看生成的预处理文件
    按ESC 输入:$ 跳到预处理文件 可看到hello.c源码
    宏的本质:预处理阶段的单纯的字符串替换
    预处理阶段,不考虑C语法

    ⑽ Linux中源码编译安装程序包括哪些基本步骤

    第一步:创建编译脚本
    进入到源码目录 执行 ./configure --prefix=/.../.....(--prefix=后面是想要安装到的目录)
    第二部:编译
    执行 make
    第三部:安装
    执行 make install
    当然上面这几部都是最基本的步骤,如果想优化编译,要在./configure 后面加参数,或者configure之后手动修改Makefile文件 如O2(优化等级) FLAGS 等编译参数的修改。
    --------------------------------------------------------------------------------------------------------------
    以上都是源码包的编译
    如果是自己写的C代码 直接 用gcc编译即可。
    例如 编译test.c
    执行 gcc -o test test.c即可将test.c编译为可执行的文件 test

    自己打出来的 要采纳啊!

    热点内容
    旧电脑搭建网络打印服务器 发布:2025-02-12 02:09:45 浏览:648
    c语言顺序表基本操作 发布:2025-02-12 02:09:41 浏览:887
    安卓光遇怎么开三档画质华为 发布:2025-02-12 01:55:51 浏览:193
    微信哪里能找到登陆游戏的密码 发布:2025-02-12 01:54:22 浏览:591
    php获取服务器ip地址 发布:2025-02-12 01:54:12 浏览:578
    对象存储和nas哪个好 发布:2025-02-12 01:50:34 浏览:445
    phpmulticurl 发布:2025-02-12 01:41:58 浏览:70
    数据库的集群 发布:2025-02-12 01:36:55 浏览:633
    c语言实验买糖果 发布:2025-02-12 01:36:54 浏览:263
    安卓怎么转微信到iphone 发布:2025-02-12 01:36:22 浏览:385