精华内容
下载资源
问答
  • 编译Keil工程时会生成很多编译文件,在备份程序时如果将编译文件一起备份会浪费M级别的存储空间,当随着程序版本的增多,占用的存储空间会很大,如果将这些无用的编译文件删除,再备份程序,会将存储空间缩小到K级别...

            编译Keil工程时会生成很多编译文件,在备份程序时如果将编译文件一起备份会浪费M级别的存储空间,当随着程序版本的增多,占用的存储空间会很大,如果将这些无用的编译文件删除,再备份程序,会将存储空间缩小到K级别。

     

    实现方法:通过编写bat脚本删除无用的编译文件。

     

    脚本实现:

    1.创建一个.bat属性的文件,起名“清理keil无用文件”。

    2.打开创建的.bat属性文件,添加如下代码并保存bat文件。

    del *.bak /s
    del *.ddk /s
    del *.edk /s
    del *.lst /s
    del *.lnp /s
    del *.mpf /s
    del *.mpj /s
    del *.obj /s
    del *.omf /s
    ::del *.opt /s  ::不允许删除JLINK的设置
    del *.plg /s
    del *.rpt /s
    del *.tmp /s
    del *.__i /s
    del *.crf /s
    del *.o /s
    del *.d /s
    del *.axf /s
    del *.tra /s
    del *.dep /s           
    del JLinkLog.txt /s

    del *.iex /s
    del *.htm /s
    del *.sct /s
    del *.map /s
    exit
     

    3.将编辑好的bat文件放到keil工程的根目录,双击bat文件运行,就会删除该keil工程中无用的编译文件。

     

     

     

    展开全文
  • XE 编译生成的文件了,如何减少文件体积大小 1、Project->options->Linking->debug information 设置为False即可

    XE 编译生成的文件太大了,如何减少文件体积大小

    1、Project->options->Linking->debug information 设置为False即可 很明显,能降低一半,减少一半

    2、在工程里
    program project1;
    { Reduce EXE size by disabling as much of RTTI as possible (delphi 2009/2010) }
    {$IF CompilerVersion >= 21.0}
    {$WEAKLINKRTTI ON}
    {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
    {$IFEND}
    
    展开全文
  • golang 编译文件问题处理

    千次阅读 2018-04-25 16:03:00
    编译和执行文件效率都差不多。但是1.9.2编译出来的文件6M。 个人觉得这个有点了,关键是功能也不复杂。所以觉得这个体积简直太夸张了,试试能否减肥。 使用原始build编译的大小 6,167KB 通过去除部分连接...

    go1.9.2出来了,有一个用golang写的工具要编译,正好也测试一下。我是在windows10 64位下测的。编译和执行文件效率都差不多。但是1.9.2编译出来的文件6M。
    个人觉得这个有点大了,关键是功能也不复杂。所以觉得这个体积简直太夸张了,试试能否减肥。

    使用原始build编译的大小
    6,167KB

    通过去除部分连接和调试,build部分参数查看结果。
    -a 强制编译所有依赖包。
    -s 去掉符号信息
    -w 去掉DWARF调试信息,得到的程序就不能用gdb调试了
    不建议s和w同时使用。
    go build -ldflags -w test.go
    但是体积还是有点大
    4,236KB

    最后还只能是加壳压缩。工具地址如下:
    https://github.com/upx/upx/releases
    执行命令
    upx.exe -9 -k “test.exe”
    压缩后的体积
    1,372KB

    转载于:https://my.oschina.net/mickelfeng/blog/1801014

    展开全文
  • C++编译文件

    千次阅读 2016-04-12 20:05:17
    本人小白程序猿,之前写过C++ ACM,但...编译Java倒好办,直接用Maven就行了,编译C++,大概也知道用g++或者gcc,但一直没有实际用过项目,今天就研究了一发,真是博大精深。 编译 首先编译,在操作系统的课程中

    本人小白程序猿,之前写过C++ ACM,但一直没有关注过编译,都是直接IDE,一直不了解原理。最近老板给了个任务,要用一个类似Maven的工具来编译C++,因为项目是用C++,Java还有一些脚本混合编程的。编译Java倒好办,直接用Maven就行了,编译C++,大概也知道用g++或者gcc,但一直没有实际用过大项目,今天就研究了一发,真是博大精深。


    编译

    首先编译,在操作系统的课程中有介绍过,就是把高级语言(c++java这些)翻译成汇编,这个过程就是编译,然后汇编再和一些库链接,然后生成可执行文件(windows上是exeLinux上是elf)。

    动态链接和静态链接

    其次就是涉及到动态链接和静态链接。这个概率在c++虚函数的老师也提及过,虚函数其实就算是一种动态链接,在运行的时候才匹配,其他的那些函数属于动态链接,在编译的时候就匹配……虚函数的水太深了,虽然之前看过几次,但还是有点忘了,这里就不讨论了。

    跟虚函数很类似,或者说就是同一个东东,库的加载也分动态加载和静态加载。静态加载就是在编译之后,就加载静态库函数,然后整合进可执行文件中;动态加载是在程序运行的时候才加载库函数。

    可认为静态加载就是把库函数全部打包进可执行文件,就好像吃饭的时候,你把你需要吃的菜全部都放进你的碗里(菜就是库函数,碗就是你的可执行文件),动态加载就是你需要吃菜的时候才去夹菜。

    所以就会有两个情况,如果你的库函数太大,生成可执行文件的速度就会慢,而可执行文件比较大,因为全部都在可执行文件里面了,但是在运行的时候就会很快,因为不需要从外界获取库函数了。但是如果是动态加载,生成可执行文件的速度会很快,而且所需要的空间不大,但是运行过程中可能会比较慢。

    但是总体来说,当项目很大的时候,有很多库函数是公用的,如果都用静态加载,那么会是的好几个可执行文件里面都有静态的库函数,这样就浪费空间了。所以一般会比较常使用动态链接库(linux so文件,windowsdll文件)。

    如何生成静态链接库和动态链接库呢

    http://www.cnblogs.com/skynet/p/3372855.html 这篇博客介绍得很清晰了,而且还介绍了什么是动态库什么是静态库。

    这里就不重复了,不要重复造轮子


    MakeMakefile

    上面的博客主要是用g++来介绍生成编译的库,但是如果遇到项目文件比较大的时候,这个时候用g++或者gcc效率会比较低。当然你也可以写一个shell脚本进行批量编译,这的确是可行,但是有一个对于大项目致命的缺点:当项目文件很多的时候,但我只更新其中几个文件的时候,如果用shell进行编译或把之前没有改动的文件一起编译,造成资源浪费,所以可以通过Linux上面一个很厉害的命令,make

    MakeLinux上一个命令,这个命令就是给大项目提供批量编译的,主要的原理是通过一个叫makefile(文件名就是makefile,可以认为是类似于maven中的pom之类的配置文件)的文件,里面记录每个文件的依赖,通过哪些文件生成哪些文件,当然这个东西是不能自动帮你下载东西的,然后主要是用gcc的命令。具体格式如下图所示,奇数行是依赖关系,偶数行是命令,这个命令前面要加tab的,不能用空格代替,命令是gcc的命令,所以在编译c++的时候会有所不同,下面会提到。

     



     

    所以自己就可以把上面的博客改写成用makefile的形式,然后用make命令就可以搞定了,如下图(相比上面的博客稍有改动)

    这里注意一点,还有一个参数是-lstdc++,这里因为用的是gcc的命令,gcc主要是给C编译的,所以不会自动去找C++中std的库,所以要自己手动加个参数,如果是g++就不用,因为g++本身就是给C++编译的。这里具体参数的意思可以参照上面那篇博客(人家已经讲得很好了,就不重复造轮子了)




    C++头文件(.h)和源文件(.cpp

    说完了编译,但是可能很多人对C++的头文件和源文件没有清楚的概念,其实我之前也是,也是为了做这个项目,才了解了一下,之前一直用C++ACM,也没有意识到有什么区别。

    如果有做过JavaAndroid的人应该知道package这个概念,其实可以把C++的头文件和源文件看做是一个package,参考来自于下面的博客。至于package也可以认为是库,有时候一个项目会反复用到很多代码,这个时候只要有一个库函数,定义了这些程序,这时候只要把这些库包含进来就行了,例如c++includeJavaimportphprequirec#using都是类似的效果。

    http://www.cnblogs.com/ider/archive/2011/06/30/what_is_in_cpp_header_and_implementation_file.html

    回到C++来,可以认为头文件里是定义的接口,这里稍微解释一下接口这东西,因为自己曾经也是这么无知,接口就是类似于一个窗口,例如像遥控器上面的按钮,我只需要知道按哪个有什么效果,至于里面怎么实现的可以不用管,像javac#里面都有类似的概念。

    例如你在头文件里面定义了int addint a,int b)的函数,这个函数的作用就是实现a+b,这就可以认为定义了一个借口,至于怎么实现,就去源文件里面实现。然后使用这个函数的时候,你就直接包含头文件就可以了,大概就是这样一个逻辑。

    一般在头文件中需有一个#ifndef的宏定义,这是为了防止在引用的时候被反复编译,这样只要这个库函数被编译一次就可以了,如下图所示,至于那个名字,随便取什么都可以,就是个变量名而已,不过一般建议和这个头文件的名字保持一致比较规范。如下图所示global.h



     

    在头文件里面定义好接口之后,就在源文件里面定义实现,如下图所示(part.cpp)



     

     然后在main.cpp里面这样写就可以了

     


     

    当然有人可能会问难道引用库函数一定要使用头文件么,其实可以不用,可以直接写在源文件中,例如一个写函数在一个cpp中,然后另一个cpp调用这个函数,如这篇博客所说

    http://www.crazyant.net/414.html 

    这样也是可以的,不过这相当于把两个cpp合在一起,在链接的整合的时候会写入同一个可执行文件中,这和静态库差不多,只是把合起来的工作放在了编译的时候,而静态库加载是放在写代码的时候,原理差不太多

     

    因为前人,才能更高

    1.讲解动态、静态库,在LinuxWindows下生成动态静态链接库

    http://www.cnblogs.com/skynet/p/3372855.html

    2. 比较详细的讲了一下c++头文件和源文件(可参照我给的代码理解一下)

    http://www.cnblogs.com/ider/archive/2011/06/30/what_is_in_cpp_header_and_implementation_file.html 

    3. 另一种不用头文件的库引用 http://www.crazyant.net/414.html 

    以及很多其他博客,由于大部分博客个人感觉说得太笼统,或者太冗余,就不列出了,不过还是感激各位前人的资料

    展开全文
  • Android apk反编译查看源码、反编译资源文件

    万次阅读 多人点赞 2018-06-01 13:37:00
    要想将APK文件中的代码反编译出来,我们需要用到以下两款工具:dex2jar 和 jd-gui,可以在网上自行下载,这里分享下网盘下载链接:dex2jar-2.0.zip 和 jd-gui-windows-1.4.0.zip dex2jar这个工具用于将dex文件转换...
  • 将批处理文件编译成可执行文件

    万次阅读 2018-06-10 03:07:31
    批处理(dos)是脚本语言,源代码是开放的,这对有些包含自动登录服务器的账号密码之类信息的脚本很不安全,因此需要将批处理文件编译成可执行文件,这样可以很大程度上提高安全性。这里推荐一款很好用的软件...
  • 在 CMakeLists.txt 文件中加入以下两行,可以减少 90% 以上的体积: set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s") ...
  • 第一个原因是包含了符号表,这个可以通过strip删除,文件大小会立即缩水。strip命令提供了不同参数,方便可选择的删除。 除此之外,两个编译参数“-ffunction-sections”和“-fdata-sections”,以及链接参数“-...
  • 本文将介绍Dex文件, 以及Java文件如何生成Dex文件的?最后介绍Dex文件通过什么方式来执行?
  • 用visual studio 建立了一个win32控制台应用程序(项目),该工程包含多个头文件(.h文件)、源文件(.cpp文件),程序没有问题,如果将程序全写在一个文件(此文件很大)中当然编译过程十分简单,也能编译通过,但是...
  • 编译后exe文件问题可能遇到的问题解决办法 将Python文件编译成exe文件后,可以直接在Windows上运行,不需要再依赖Python环境,可以复制到其他电脑中直接使用,特别方便。 1.安装编译工具 pyinstaller是Python...
  • 如何编译Linux内核文件

    千次阅读 2018-07-28 10:10:15
    如何编译Linux内核文件 ...答案是不可能的,因为Linux内核比我们uboot更加的复杂,所以Linux内核也需要配置再进行编译的,而且Linux内核的配置项因为有数千项目,所以Linux靠手工配置是不现实的,所以牛就是...
  • 用makefile编译C文件

    千次阅读 2012-08-18 19:59:20
    makefile 其实功能挺强大的,这里只是简单谈谈编译C文件的方法。 简单点说,makefile 描述的是目标文件,依赖文件文件操作命令三部分内容, 目标文件:依赖文件 (一个TAB键)命令语句 一个简单的...
  • 今天我们公司的网站,突然打不开了,进入服务器看了下,详细错误信息,显示“未预编译文件“/Index.aspx”,因此不能请求该文件”的错误,在网上查了下,说是有多的原因,根本就不是那些问题,后来通过多次
  • Python的编译文件介绍

    千次阅读 2013-10-04 14:12:33
    相对于py文件来说,编译成pyc和pyo本质上和py没有太区别,只是对于这个模块的加载速度提高了,并没有提高代码的执行速度,通常情况下不用主动去编译pyc文件,除非需要商业提供,防止源代码泄露。 (1)什么是pyc...
  • 禁用的方法简单,就是要在工程(dpr文件中。Delphi2010下项目文件是dproj文件,但dpr文件仍然是默认的编写代码的项目文件)的Uses语句前添加下面的定义就可以了: { Reduce EXE size by disabling as much of RTTI...
  • 先给结论:可以减少到原来的29% ... build tlscat.go 编译出来的有4.6MB! 后来发现这个Golang的1.5才会解决的问题 Issue #6853 all: binaries too big and growing 可是,我就
  • IDEA的web项目不是直接被直接放在tomcat容器中(也就不在tomcat目录下的webapps文件夹中),而是将生成的web项目与tomcat按照IDEA的“技术”形成连接,这样减少了很大的配置tomcat的时间,一次配置,一劳永逸。...
  • C和C++文件混合编译

    千次阅读 2017-06-07 23:52:24
    一个项目中若同时存在.c文件和.cpp文件,该如何编译呢? 首先,来看一下编译的一些小知识: 1.gcc编译*.c/*.cpp文件依据各自的文件类型各自编译为C型目标文件和C++型目标文件 2.g++编译*.c/*.cpp文件,都是编译为C++...
  • 使用vs2008+MFC进行开发,发现静态编译出来的文件超级,超出了可以忍受的范围。于是做了如下实验: vs2008下:test 1、新建一个默认的MFC对话框工程,采用共享MFC的方式,生成文件:82KBtest 2、新建一个默认的MFC...
  •  安卓应用程序的开发语言是java,但是由于java层的代码容易被反编译,而反编译c/c++程序的难度比较,所以现在多安卓应用程序的核心部分都使用NDK进行开发。使用NDK开发能够编译c/c++程序,最终生成so文件。而...
  •  反编译是一个对目标文件可执行程序进行逆向分析,从而得到源代码的过程。尤其是像Java这样的运行在虚拟机上的编程语言,更容易进行反编译得到源代码。今天介绍几款反编译的工具,以及如何更快的批量反编译。 介绍...
  • apk文件编译、回编译和签名之完全教程 前提:需要安装JDK 工具:apktool_2.0.1.jar 下载网址: http://ibotpeaches.github.io/Apktool/ 反编译: 注:下文的盘符、目录可按照使用者具体情况而定。 在D盘下...
  • 几种工具反编译编译好的DLL文件

    千次阅读 2016-07-04 11:41:00
    我们平时在工作中经常会遇到一些已经被编译后的DLL,而且...1:反编译工具ILSpy.exe:是个不错的反编译软件,而且是免费了; 2:微软的工具ildasm.exe:这个是把DLL生成IL文件的一个软件,是微软自带了;可以在C:\...
  • 如何将任意文件编译为.o文件

    千次阅读 2011-08-28 14:40:11
    在许多嵌入式开发的系统...假定我们有一个文本文件(一般需要嵌入的都是图片文件或者bin文件,此处只是为了方便演示)data,需要把这个文件做成.o文件,并编译到最终程序中。 首先执行objcopy命令:objcopy -I binary
  • 在Eclipse中反编译Class文件的方法

    万次阅读 2017-03-21 15:21:04
    学习中,需要反编译Java的class文件。我的开发工具是Eclipse3.6。我找到了jad反编译工具,在互联网上找到了一些有用的安装步骤。下面记录了我的安装过程。  一、下载  1。下载 jad 工具,在官方网站没有...
  • C++头文件和源文件编译过程

    万次阅读 多人点赞 2019-04-01 16:07:15
    2、用户自定义的文件用双引号括起来,编译器首先会在用户目录下查找,然后在到C++安装目录(比如VC中可以指定和修改库文件查找路径,Unix和Linux中可以通过环境变量来设定)中查找,最后在系统文件中查找。...
  • eclipse不能自动编译java文件的问题

    千次阅读 2013-04-08 10:56:54
    鸭梨很大。进来开发J2EE项目突然遇到一个问题:eclipse不能自动编译java文件,在网上找遍各种答案都没有解决这个问题,冥思苦想查遍各种eclipse资料也没有解决,最后偶然的一个发现解决了这个问题。特此Mark一下,...
  • Python反编译&pyc文件编译

    千次阅读 2009-06-20 10:51:00
    在网上找了一个项目,自己改了长时间,总算有点起色了,部分的2.5特性都是支持的,只是2.5版本有些是经过编译器优化的,这个就比较麻烦了,因为对于这些编译的代码,并不能找到对应的文法,那么
  • 直接使用gcc在命令行编译运行c/cpp多文件 三种方法: 使用g++命令直接一次性编译多个文件 这里以简单的HelloWorld程序为例,假设我们一共有三个文件:main.cpp, HelloWorld.cpp和HelloWorld.h. 其中HelloWorld.cpp中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 966,697
精华内容 386,678
关键字:

编译文件很大