精华内容
下载资源
问答
  • 使用Ant对程序进行编译打包

    千次阅读 2013-01-24 19:02:48
    因为项目中使用到了Ant,但是这个不太了解,所以在网上搜了下资料,根据文档在本地写了个HelloWorld做了下测试。 首先必须要有Ant环境,好像值需要解压就行了。然后设置下环境变量,环境变量的设置与Java类似,...

    因为项目中使用到了Ant,但是对这个不太了解,所以在网上搜了下资料,根据文档在本地写了个HelloWorld做了下测试。

    首先必须要有Ant环境,好像值需要解压就行了。然后设置下环境变量,环境变量的设置与Java类似,这里不在啰嗦。设置完成

    后,进入dos界面,键入ant,显示下面的界面即说明Ant环境添加成功:


    在E盘下建立一个Demo文件夹,主要有如下几个文件需要自己编写:

    1.新建一个src文件加,在src中添加一个HelloWorld.java文件:

    package test.ant;
    public class HelloWorld{
        public static void main(String[] args){
            System.out.println("Hello,World");
        }
    }

    2.新建一个build.xml文件,内容如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <project name="HelloWorld" default="run" basedir=".">
        <property name="src" value="src"/>
        <property name="dest" value="classes"/>
        <property name="hello_jar" value="hello.jar"/>

        <target name="init">
            <mkdir dir="${dest}"/>
        </target>

        <target name="compile" depends="init">
            <javac srcdir="${src}" destdir="${dest}"/>
        </target>

        <target name="jar" depends="compile">
            <jar jarfile="${hello_jar}" basedir="${dest}"/>
        </target>

        <target name="run" depends="jar">
            <java classname="test.ant.HelloWorld" classpath="${hello_jar}"/>
        </target>

        <target name="clean">
            <delete dir="${dest}"/>
            <delete file="${hello_jar}"/>
        </target>

        <target name="rerun" depends="clean,run">
            <ant target="clean"/>
            <ant target="run"/>
        </target>
    </project>

    添加完成之后,进入Dos界面,然后进入到E盘的demo文件夹下,输入ant命令即可完成对HelloWorld程序的编译,并生成一个hello.jar包。

    ***********************************************************************************************************************************************************

    ***********************************************************************************************************************************************************

    下面介绍下build.xml文件中的配置:

    <project name="HelloWorld" default="run" basedir=".">

    </project>

    Ant的所有内容必须包含在这个里面,name是我们给它取得名字

    basedir是工作的根目录,其中的"."代表当前目录

    default代表默认要做的事

    =================================================================

    <property name="src" value="src"/>
    <property name="dest" value="classes"/>
    <property name="hello_jar" value="hello.jar"/>

    类似程序中的变量

    =================================================================

    <target name="init">
        <mkdir dir="${dest}"/>
    </target>

    目的:创建一个文件夹

    把我们想做的每一件事情写成一个target,他有一个名字,使用mkdir来创建文件夹。

    将第一个target命名为init,其他的target依赖这个初始化target。

    =================================================================

    <target name="compile" depends="init">
            <javac srcdir="${src}" destdir="${dest}"/>
    </target>

    目的:编译程序,把源程序编译到目标地点

    depends是它所依赖的target,在执行这个compile的target之前,ant会先检查init是否已经

    被执行过,如果执行过,则直接执行compile,如果没有执行过,就会执行它依赖的target,

    然后再执行本身的target。

    =================================================================

    <target name="jar" depends="compile">
            <jar jarfile="${hello_jar}" basedir="${dest}"/>
    </target>

    目的:打jar包

    =================================================================

    <target name="run" depends="jar">
            <java classname="test.ant.HelloWorld" classpath="${hello_jar}"/>
    </target>

    目的:运行jar包内的程序

    =================================================================

    <target name="clean">
            <delete dir="${dest}"/>
            <delete file="${hello_jar}"/>
    </target>

    目的:删除生成的文件

    =================================================================

    <target name="rerun" depends="clean,run">
            <ant target="clean"/>
            <ant target="run"/>
    </target>

    目的:再次运行,这里显示了如果在一个target里边调用其他的target





    展开全文
  • .net的exe或dll等程序进行编译并生成源码文件
  • 请先准备好一个 c#写的 exe 程序,或者可以使用我提供的 exe 程序也可以(很简单,为了测试这里仅生成了一个带按钮的 winform,单击按钮提示弹窗)Test WinForm.exe这里通过 ildasm 反编译 exe 程序得到 il 文件,...

    为了保证示例的完整性,请先准备好一个 c#写的 exe 程序,或者可以使用我提供的 exe 程序也可以(很简单,为了测试这里仅生成了一个带按钮的 winform,单击按钮提示弹窗)

    Test WinForm.exe

    这里通过 ildasm 反编译 exe 程序得到 il 文件,然后对 il 文件进行修改,用于修改弹窗中的内容

    ilasm 所在目录

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ilasm.exe

    ildasm 所在目录

    C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\ildasm

    以上根据具体情况在自己的目录中查找即可

    以下是具体的操作步骤

    一、反编译 exe 为 il 文件

    双击打开 ildasm –> 点击文件 –> 打开刚刚下载或自己的 exe 程序 –> 点击文件 –> 转储选择 UTF8 –>选择位置保存 il 文件,同时可能会生成一些资源(res)文件,具体如图

    打开 ildasm
    选择要反编译的文件
    另存文件为 il 格式文件
    选择 utf8

    接下来就是对 il 文件进行修改,这里以示例提供的 exe 为例,点击按钮时弹出的内容为 message ,这里想要让这个 message 改为 message123
    修改 il 文件

    修改后,对 il 文件重新编译为 exe 文件,命令为:

    ilasm test.il /output:test.exe

    如果需要资源文件,则

    ilasm test.il /resource:test.res /output:test.exe

    如果要编译为 dll 文件,则

    ilasm test.il /dll /output:test.dll

    然后再执行 test.exe 并点击按钮,发现弹出的内容已修改为 message123
    修改后重新编译并执行的结果

    展开全文
  • C#对程序进行编译修改

    千次阅读 2018-06-29 16:29:07
    编译源码 1:ReflectorInstaller 2:reflexil(是一个DLL插件) 下载完毕以后把DLL复制到ReflectorInstaller安装目录下的Addins目录下 然后打开Reflector.exe,点击Tools\AddIns\点击+号,选择刚才复制到目录的DLL,然后...

    下载工具:

    一:

    反编译源码

    1:ReflectorInstaller

    2:reflexil(是一个DLL插件)

    下载完毕以后把DLL复制到ReflectorInstaller安装目录下的Addins目录下

    然后打开Reflector.exe,点击Tools\AddIns\点击+号,选择刚才复制到目录的DLL,然后Close

    3:打开需要反编译的exe\dll

    点击File\Open Assembly\需要反编译的文件,然后到文件列表结尾,找到对应打开文件的名称,右击\Export Source Code

    接下来选择输出目录,点击Start,开始反编译,即可得到文件源码

    二:

    反编译修改文件

    重复上面步骤到打开需要反编译的exe\dll

    到文件列表结尾,找到对应打开文件的名称,点击展开列表\找到对应要改的区域,然后点击Tools\reflexil V1.6(V1.6为版本)

    然后会弹出需要更改的界面,是一个下拉滚动框,在这个框里面进行更改,找到对应的值,右击,选择Edit

    更改完以后返回项目名列表\右击\reflexil V1.6(V1.6为版本)\Save 进行保存即可



    展开全文
  • 在linux下写过不少的fortran程序,但很少写makefile文件,通常情况下我是手动用ifort或pgf90进行编译,虽然也在大型程序中写过一些代码,但因为都有现成的makefile文件,我也只是修改一下配置参数,先make ...

    在linux下写过不少的fortran程序,但很少写makefile文件,通常情况下我是手动用ifort或pgf90进行编译,虽然也在大型程序中写过一些代码,但因为都有现成的makefile文件,我也只是修改一下配置参数,先make clean,再make,只要生成可执行程序就算搞定了。今天心血来潮,自己写了几个Makefile,供大家参考。


    一、不用Makefile的直接编译
    比如有2个简单程序,主程序为main.F90,子程序为sub.F90. 如果直接编译的话,键入
    ifort main.F90 sub.F90
    就可以生成一个a.out文件,即为可执行程序了。
    你也可以指定一个可执行程序的名字,如
    ifort main.F90 sub.F90 -o bin.exe
    则可以生成bin.exe,实际上与a.out是一样的。
    当然,如果你不喜欢用子程序,或者子程序和主程序都写在一个F90文件中(如main.F90),上述的编译语句直接省掉sub.F90就行了,但不推荐这样写程序,特别是程序比较大的情况下,一是程序间的关系容易理不清,另外风险也大,万一哪天把程序删掉了或改错了,损失可就大了。


    上面的编译也可以分两步进行,
    ifort -c main.F90 sub.F90
    ifort -o main.exe main.o sub.o
    第一行称为编译compile,第二行称为链接link。这个过程最后还是生成main.exe,第一步生成main.o和sub.o两个目标文件,第二步将目标文件链接成可执行文件main.exe。这看起来有点多此一举,如果在程序不大,子程序不多的情况下,这确实是浪费体力,但如果有几十或几百个子程序(如WRF模式),编译一次可能要花几十分钟或几个小时,那么可以单独编译修改的那个程序生成相应的.o文件就行了,然后再执行第二步链接,这样可以节省不少时间。也就是说,第一步的编译可以分开进行:
    ifort -c main.F90
    ifort -c sub.F90
    在有几个子程序的情况下,这样分开编译虽然花点工夫,还是值得的,因为程序很难一蹴而就,总要调试,总要修改,分解成若干子程序逐个编译更容易各个击破。


    二、简单的Makefile文件
    我们仍以一行编译语句为例,将其写在Makefiel文件中。使用vi建立一个新的Makefile文件,在其中写入:
    main.exe: main.F90 sub.F90
    ifort main.F90 sub.F90 -o main.exe
    就可以了。你把已有的main.exe删掉,键入make,你会发现生成了新的main.exe. 这就是Makefile文件了,简单吧!
    如果报错的话,你看看是不是Makefile中的第二行之前没有用tab键空格,必须用tab键,用空格键是不行嘀。


    下面我们再来解释一下Makefile的写作格式
    简而言之,Makefile的格式就是二行,第一行定义目标文件和依赖文件,:之前的main.exe为目标文件,:之前后的main.F90和sub.F90为依赖文件。第二行为执行语句,与手动编译相同。好像第一行还是多此一举,还不如手动编译只要一行就搞定,我们看完下一个例子再来讨论这一点。


    那么对于编译和链接分解的语句如何写呢。重新打开Makefile文件,将原来的两行删去,再写入:
    main.exe:main.o sub.o
    ifort -o main.exe main.o sub.o
    main.o:main.F90
    ifort -c main.F90
    sub.o:sub.F90
    ifort -c sub.F90
    这就可以了,是不是还发现一点异样?语句的顺序和前面手动编译时是反的,先是链接语句,后是编译语句,这一点我们稍后解释。还是先运行一下吧,将原来的.exe和.o文件都删掉,执行make后,是不是可以看到新生成了.o和.exe文件。你还可以试试将其中的main.F90进行修改(比如加一行空格,或加一条注释),再执行make,可以发现,仅更新了main.o和main.exe,而sub.o还是原来的生成时间。这就是make的优势。


    我们先来解释一下目标文件和依赖文件的关系,如果任意一个依赖文件发生了改变,则要运行下一行的执行语句,即生成新的目标文件,否则跳过执行文件。在make执行的过程中,实际上并不是顺序执行的,而是先把所有的目标文件和依赖文件检查一遍,从最顶层的目标文件开始,再分解检查各个子目标,将发生变化的依赖文件标记下来,然后再从下向上执行标记语句,最后更新顶层的目标文件。所以写makefile文件的顺序必须是先写顶层的目标文件,也就是连接生成的.exe文件,然后再分别写编译要生成的.o文件,这与手动编译时是不同的。make的工作方式就象警察办案一样,先侦察推演,收集证据;再顺藤摸瓜,收网抓贼。


    三、复杂一点的Makefile文件
    下面这个例子中用到了变量定义和静态模式
    SOURS = main.F90 sub.F90
    OBJS = main.o sub.o
    BIN = main.exe
    F90 = ifort


    ${BIN}:${OBJS}
    ${F90} -o ${BIN} ${OBJS}
    ${OBJS}: %.o :%.F90
    ${F90} -c $<
    先来说说变量定义,这个地球人都知道,只要会写shell脚本的人都能看的懂,如果子程序不多的话也没必要定义来定义去的。


    http://www.zhixing123.cn/ubuntu/30488.html

    展开全文
  • 任务:获得可执行程序 1.使用gcc生成.o文件: gcc -c CWE121_Stack_Based_Buffer_Overflow__CWE129_large_45.c gcc -c io.c 2.将两个.o文件合并生成最终的文件: gcc -o main CWE121_Stack_Based_Buffer_...
  • 翻译程序编译程序

    2020-08-03 13:13:41
    如果源语言是高级语言,如Pascal,C,C++,Ada,Java语言等,目标语言是是诸如汇编语言或者机器语言之类的低级语言,那么称这样的翻译程序编译程序,它所进行的转换工作如图 简单一点说就是,翻译程序就是将源语言写的...
  • cmd命令java程序进行编译时出现:“编码GBK的不可映射字符”两种解决方法,以及dos下帮助文档的制作
  • apk反编译工具合集点击下载其实在刚开始接触Android时就已经学过这门反编译技巧,只是当时没去作这方面的总结,最近公司要我去开发的项目都是照抄别家公司的,其UI效果都是一模一样的。那么问题来了,不知大家有没有...
  • WPF 程序编译过程

    2019-08-30 14:31:31
    基于 Sdk 的项目进行编译的时候,会使用 Sdk 中附带的 props 文件和 targets 文件项目进行编译。Microsoft.NET.Sdk.WindowsDesktop 的 Sdk 包含 WPF 项目的编译过程。 而本文介绍 WPF 项目的编译过程,包含 WPF ...
  • 编译的工作会由IDE自动完成,这样方便了我们工作,但是却使我们忽略了代码是如何执行的本质,或者当电脑上只有jre环境,没有开发环境,就需要在cmd环境下进行java程序编译和运行,本文详细介绍了如何在cmd环境下...
  • 使用ConfuserEx.net程序进行混淆,达到不被反编译的目的 ConfuserEx的下载地址:https://github.com/yck1509/ConfuserEx/releases ConfuserEx的使用: https://www.cnblogs.com/yang-fei/p/6209280.html ...
  • 这时会弹出一个Start simulatio的对话框,在Design的标签下你会看到有很多库,展开work库会看到刚才编译成功的文件(如果有多个文件的话选择一个你想仿真的,比如测试程序,这时底部的OK会由刚才的不可用变成可用的),...
  • 在linux下编译x.c程序时,...gccc程序编译分为如下四个步骤:process、compile、assemble、link,分别为预处理、编译、汇编、链接。在这四个过程中,process会头文件、注释等进行处理,生成插入头文件后的文件。
  • 就是,在一个文本框edit中写好了一段代码(字符串)。怎么通过点击一个按钮,就文本框里的代码进行编译并执行。 本人学的不深,求介绍得简单(。ì _ í。)
  • 汇编程序编译与连接

    千次阅读 2018-01-12 21:37:06
    汇编程序写好后,使用汇编语言编译程序源程序文件中的源程序进行编译,产生目标文件;再用连接程序目标文件进行连接,生产可在操作系统中直接运行的可执行文件。 可执行文件包含两部分: 程序(从
  • 使用makefile进行编译执行(1)建立makefike文件(2)编写makefike文件(2)执行make命令并运行(3)运行结果三、总结 题目 编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算...
  • 文章目录单片机C51和STM32... 对程序进行编译总结 单片机C51和STM32程序编译与proteous仿真操作 一. 利用单片机C51设计自动打铃器。 利用单片机,设计一个自动打铃器,熟悉定时、中断方法,并通过电路仿真。 1.自动
  • 采用gcc编译opencv程序

    千次阅读 2014-01-03 20:57:17
    其实不是QT还是eclipse都是采用了gcc/g++对程序进行编译。 那么采用gcc/g++手动编译程序也是相当容易的。 在系统安装了opencv的情况下(opencv2.4,默认安装,安装在usr/local/lib usr/local/include) 采用下面...
  • 最近在linux系统中进行了几次编程,只能使用toolchain进行编译,也因此对程序预编译-编译-链接过程终于有了一些概念。所以说IDE虽然好,但是会让人丧失很多深入学习的机会啊!好了,废话不说,下面开始正题。1、...
  • 微信小程序编译

    2021-01-04 14:43:04
    经过长期的调研发现微信小程序是没办法防止别人抓包的,只要连上charles就能随意抓取微信小程序的任意一个接口数据,因此我们只能对程序代码进行加固,主要的方式如下: 1. 接口通讯层面添加signature,后台获取...
  • 三、使用dnSpy工具对程序进行编译:  ①使用dnSpy工具对刚才生成的ChangeString.exe进行反编译,如下图所示: ②在Main函数内右键点击菜单,在弹出的上下文菜单中选择“编辑方法(C#)”,如下图所示: ...
  • VSCodeC++程序的多文件程序编译和调试 前言 最近在使用vscode进行C++的学习,发现编译多文件程序的时候通过F5(运行——启动调试)无法编译出可执行.exe文件,于是在进行了学习和尝试,目前可以编译和调试多文件程序...
  • 编译编译程序读取源程序(字符流),进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统可执行文件格式的要求链接生成可执行程序。如果想看某个...
  • 1 词法分析:词法分析是第一阶段,这个阶段的任务是从左到右一个字符一个字符的读入源程序构成源程序的字符流进行扫描和分解,从而识别出一个个单词。 2 语法分析:语法分析的任务是在词法分析的
  • C程序编译过程

    2015-04-08 09:21:47
    编译编译程序读取源程序(字符流),进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统可执行文件格式的要求链接生成可执行程序。 C源程序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,470
精华内容 8,588
关键字:

对程序进行编译