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

谈谈编译和运行

本来今天要讲讲 API 系统的配置和 CLI 等子系统,但是很多同学对我上一篇文章 再谈 API 的撰写 - 架构 中所述的「编译时」和「运行时」有不少困惑。这篇文章先讲讲这两个概念。...在 上一篇 文章里,我讲到: 通过这样一个接口,我们把 API 系统区隔为「编译时」和「运行时」。这个接口写出来的 API,更像是一个等待编译的源文件。...(题外话:其实解释型语言也是有一个 JIT 「编译」的过程;现在纯粹的,完全在运行时一句句解释执行的语言,只能生存在象牙塔里) 有了这样一层(indirection)编译的过程,源数据和目标数据就被分离开...前者把编译和运行混在一起,在请求页面的时候生成博文;而后者则将二者完全分离,你得使用 jekyll 的工具把 markdown 撰写的博文编译成 html,才能被正常访问。...把「编译时」和「运行时」分离,是一项很重要的抽象能力。

89490

java编译和运行

里面 一般都是进入到这个目录里面编译解释 编译:javac B.java 解释:java B 注意: 解释不可能以带目录的方式去运行程序,编译可以 零:java应用程序的基本结构 一个java应用程序由若干个类组成...类 如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名是 .java(注意这个有个点) 如果源文件没有public类,那么只要名字和某个类相同,且扩展名是.java也可以...; return this.a; } } 注意:在编译时候可能会出现的问题 (1)如果回车后出现javac不是内部或外部命令,也不是可运行的程序或批处理文件 解决方法: 方法一:重新设置环境变量...static void main(String[] paramArrayOfString) { B b = new B(); System.out.println(b.f(3)); } } 运行...;然后回车确定,再使用java解释器运行主类。

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

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

    一、翻译环境和运行环境    在 ANSI C 的任何⼀种实现中,存在两个不同的环境,如下: 翻译环境:在翻译环境中,会通过编译和链接两个大步骤,其中编译又分为了预处理(预编译)、编译和汇编,将源代码转换为可执...⾏的机器指令(⼆进制指令),生成可执行程序 运行环境:即执行环境,在运行环境中会执行可执行程序,并输出结果 如下图:    接下来我们就来学习在翻译环境和运行环境中具体会做些什么 二、...我们一起来学习一下    翻译环境是由编译和链接两个⼤的过程组成的,⽽编译⼜可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程,接下来我们就来学习它们 1.编译 编译要完成的就是将我们的源代码转换成可执行的机器指令...,在VS中,我们只需要按下ctrl+f5,那么VS就会一下就帮我们把编译、链接和执行这三个动作一起完成了,瞬间就可以看到结果    所以在VS中我们无法看到.c的源文件编译和链接的完整过程,这个时候我们就可以借助其它的编译器...⽐如:⽬标⽂件的格式elf,链接底层实现中的空间与地址分配,符号解析和重定位等,如果你有兴趣,可以看《程序员的⾃我修养》⼀书来详细了解 四、运行环境    在运行环境中有几个要点,我们只需要简单了解一下

    12110

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

    一、翻译环境和运行环境​ 在ANSI C的任何一种实现中,存在两个不同的环境。​ 第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。​ 第2种是执行环境,它用于实际执行代码。​...其实翻译环境是由编译和链接两个大的过程组成的,而编译又可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程。...链接库是指运行时库(它是支持程序运行的基本函数集合)或者第三方库。...比如:目标文件的格式elf,链接底层实现中的空间与地址分配,符号解析和重定位等,如果你有兴趣,可以看《程序的自我修养》一书来详细了解。 六、运行环境​  程序必须载入内存中。...这个时候程序将使用一个运行时堆栈(stack),存储函数的局部变量和返回地址。程序同时也可以使用静态(static)内存,存储于静态内存中的变量在程序的整个执行过程一直保留他们的值。  终止程序。

    20710

    C语言编译、链接和运行详解

    什么是编译 2. 什么是链接 3. 什么是运行 4. C 程序开发注意事项1 5. 如果想只生成目标 exe 文件,不想执行结果 6. 编译、链接和运行的流程 7. C 程序开发注意事项2 1....什么是编译 有了 C 源文件,通过编译器将其编译成 obj 文件(目标文件)。 如果程序没有错误,没有任何提示,但在 Debug 目录下会出现一个 Hello.obj 文件,该文件称为目标文件 2....什么是链接 有了目标文件(.obj 文件),通过链接程序将其和运行需要的 c 库文件链接 成 exe 文件(可执行文件)。...什么是运行 有了可执行的 exe 文件, 也称为可执行程序 (二进制文件) 在控制台下可以直接运行 exe 文件 4....编译、链接和运行的流程 ? hello.c 的源文件只有 1KB ? 编译后生成的 目标文件 只有 4KB ?

    1.7K20

    C语言编译、链接和运行详解

    什么是编译 1) 有了 C 源文件,通过编译器将其编译成 obj 文件(目标文件)。...什么是链接 1) 有了目标文件(.obj 文件),通过链接程序将其和运行需要的 c 库文件链接 成 exe 文件(可执行文件)。...什么是运行 1) 有了可执行的 exe 文件, 也称为可执行程序 (二进制文件) 2) 在控制台下可以直接运行 exe 文件 4....C 程序开发注意事项1 对修改后的 hello.c 源文件需要重新编译链接,生成新的 exe 文件后,再执行,才能生效。 5....编译、链接和运行的流程[在这里插入图片描述] hello.c 的源文件只有 1KB [在这里插入图片描述] 编译后生成的 目标文件 只有 4KB [在这里插入图片描述] 当链接生成 exe 文件变成了

    2.9K50

    java和javac编译运行java程序

    目录 目录 前言 编译命令介绍 javac java 代码编译与运行 java类发现规则 分离class和java文件 参考链接 前言 给自己定了一个月学习JVM虚拟机的计划,不管有没有卵用,学点新东西总是好的...下面,主要是总结一些如何在命令行中编译java程序。主要是想记录总结一下java的类发现原则。 编译命令介绍 其实,java编译过程主要使用了javac和java两个命令。...代码编译与运行 这里介绍一个带package的测试用例。以前大家在学习javac编译的时候,都是在默认包下进行的编译,一般不会出问题,但是遇到带package的类就不一样了。...那之所以会遇到这个问题,就是由于Ecplise这种编译器替我们掩盖了java是有类发现规则的。 java类发现规则 要想成功的编译和执行java文件,是需要有classpath和包名的共同配合。...但是,同样在src/jvm目录下,我们禁用classpath去编译CompileClass.java,是无法编译通过的,编译错误和之前是一样的。

    3K30

    .NET程序编译和运行过程分析

    以文件方式保存在硬盘上 操作系统将程序文件从硬盘读出内存 CPU从内存中取出指令执行 特点:程序必须依赖于操作系统,而且编译器生成的程序文件包含的仅仅是适用于特定...Created with Raphaël 2.1.2 托管代码 .NET Framework CLR(公共语言运行库...) 操作系统 托管代码与操作系统之间添加了.NET Framework环境和CLR,最早就是Java跨平台设计思想,.NET从2003年开始,而且发展更新迅速...特点: (1)开发者编写的代码编译后,不依赖于操作系统和特定的CPU架构机器指令,而是依赖于一种中间的,在各个操作系统上都能执行的代码,这种代码Java里面叫做ByteCode(字节码),.NET里面我们称之为...这个功能是由一个运行在特定操作系统上的软件来完成,这个软件我们称之为“虚拟机”。

    10810

    CUDA 官方样例编译和运行

    在安装完成 Jetpack 之后,可以运行一些官方关于 CUDA 的样例; CUDA(Compute Unified Device Architecture,统一计算架构)是 NVIDIA 过去十多年异军突起的最重要核心技术...,也是近年来并行计算领域中最被称颂的技术; 一、CUDA 官方样例编译 JetPack 系统将 CUDA 环境安装在 /usr/local/cuda 下面; cd /usr/local/.../oceanFFT 编译完成之后,会生成 oceanFFT 的可执行文件; 实际运行效果: 2.2 烟雾粒子模拟 5_Simulations/smokeParticles cd /usr/local/.../smokeParticles 编译完成之后,会生成 smokeParticles 的可执行文件; 实际运行效果: 2.3 nbody 粒子碰撞模拟 5_Simulations/nbody cd /usr.../nbody 编译完成之后,会生成 nbody 的可执行文件; 实际运行效果: 需要体验其他用例,步骤基本一致;

    28210

    Java基础之编译异常和运行异常

    3.处理编译异常有两种处理方式: ①使用try...catch语句进行对异常进行捕获的方式; ②使用throws关键字声明抛出的异常,调用时并对它进行处理; 四、运行异常 1.在java程序运行时产生的异常...,这种异常它不编写异常处理,但它还可以进行编译,这个就是运行异常。...2.运行异常特点是java编译器不会进行检查,在程序出现这样的异常,没有使用try...catch语句或throws关键字声明抛出,该程序也可以编译。...getProperties()方法、public static arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 方法、编译异常和运行异常...了解编译异常是在程序编译产生的一些bug,我们需要处理这些异常,这就是编译异常。 在java程序运行时产生的异常,这种异常它不编写异常处理,但它还可以进行编译,这个就是运行异常。

    47910

    编译时多态和运行时多态

    参考链接: Java中的运行时多态 多态分为两种情况:编译时多态和运行时多态。 如果在编译时能够确定执行多态方法称为编译时多态,否则称为运行时多态。  一、编译时多态  方法重载都是编译时多态。...根据实际参数的数据类型、个数和次序,Java在编译时能够确定执行重载方法。 方法覆盖表现出两种多态性,当对象引用本类实例时,为编译时多态,否则为运行时多态。...例如,以下声明p、m引用本类实例,调用toString()方法是编译时多态。 ...3.将例子1中Person和Man的方法名改为静态的getName()方法,会返回什么结果呢? ...父类中属性只能被隐藏,而不能被覆盖;而对于方法来说,方法隐藏只有一种形式,就是父类和子类存在相同的静态方法。

    56200

    编译时异常和运行时异常

    Exception(异常):是程序本身可以处理的异常 Exception可以分为运行时异常和非运行时异常 1,unchecked exceptions(运行时异常)都是RuntimeException类及其子类异常...java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 2,error和exception有什么区别?...也就是说,它表示如果程序运行正常,从不会发生的情况。 3,Java中的异常处理机制的简单原理和应用。...Exception表示程序还能够克服和恢复的问题,其中又分为系统异常和普通异常,系统异常是软件本身缺陷所导致的问题,也就是软件开发人员考虑不周所导致的问题,软件使用者无法克服和恢复这种问题,但在这种问题下还可以让软件系统继续运行或者让软件死掉...java为系统异常和普通异常提供了不同的解决方案,编译器强制普通异常必须try..catch处理或用throws声明继续抛给上层调用方法处理,所以普通异常也称为checked异常,而系统异常可以处理也可以不处理

    2.6K20

    Java 编译时多态和运行时多态

    根据何时确定执行多态方法中的哪一个,多态分为两种情况:编译时多态和运行时多态。如果在编译时能够确定执行多态方法 中的哪一个,称为编译时多态,否则称为运行时多态。...一、编译时多态 方法重载都是编译时多态。根据实际参数的数据类型、个数和次序,Java在编译时能够确定执行重载方法中的哪一个。...方法覆盖表现出两种多态性,当对象引用本类实例时,为编译时多态,否则为运行时多态。例如,以下声明p、m引用本类实例,调用toString()方法是编译时多态。...3.将例子1中Person和Man的方法名改为静态的getName()方法,会返回什么结果呢?...父类中属性只能被隐藏,而不能被覆盖;而对于方法来说,方法隐藏只有一种形式,就是父类和子类存在相同的静态方法。

    64920

    【Android 插件化】VirtualAppEx 编译运行 ( VirtualAppEx 简介 | 配置 VirtualAppEx 编译环境 | 编译运行 VirtualAppEx 代码 )

    4、Gradle 及 Gradle 插件配置 三、编译运行 VirtualAppEx 代码 四、博客源码下载 一、VirtualAppEx 简介 ---- VirtualAppEx GitHub 地址...---- 1、Android Studio 3.0 编译 VirtualApp , 需要使用 Android Studio 3.0 版本的 IDE , 否则编译会失败 ; 参考博客 : 【错误记录】Android..., 无法下载编译所需的依赖库 , 翻了墙也会下载失败 ; 在根目录下的 build.gradle 中的 buildscript.repositories 和 allprojects.repositories...delete rootProject.buildDir } 4、Gradle 及 Gradle 插件配置 Gradle 版本 4.1 ; Gradle 插件版本 3.0.1 ; 三、编译运行...VirtualAppEx 代码 ---- 按照上述编译环境配置完成后 , 源码编译通过 ; 运行效果 : 克隆一个 APP ; 克隆完成 : 启动应用 : 银行的 APP 居然能在插件化引擎中启动起来

    1.1K20
    领券