应用程序打包技术之一(源代码篇)

目录 编程

1. 应用程序打包技术之一(源代码篇)
2. 应用程序打包技术之二(deb篇)
3. 应用程序打包技术之三(rpm 篇)
4. 应用程序打包技术之四(exe篇)

相信很多朋友都曾经为方便做某件事写过自己的小程序(像我写过的 casnetsendsms),但很多怕都是藏在深山没人识,最后不了了之,自己也把它们丢在角落里忘记了。

把这些小工具上传到技术论坛或者 CSDN 下载频道之类的网站,还是能收到一些关注的,而且还能攒积分和声望。但是为什么不把它们发布出去呢?估计有几个原因:源代码太乱,编译又挺复杂,不好意思给别人看;二进制程序包不会打,不知道该怎么发布。

因此我打算在本系列文章中分享一下我的程序打包经验,目前来讲计划有四篇:源代码篇、deb 篇、rpm 篇和 exe 篇。这些技术在网上您都能找到,因为我也是从网上学习的,算是一个笔记和汇总吧。如果您有好的批评或建议,不妨在评论中指出,帮助我完善这篇文章。

源代码篇

发行源代码包是件最简单的事情,因此也在最先介绍。有同学会说,打个压缩包不就完了嘛。的确如此,但是在压缩之前您也要有几个注意事项:

1. 删除版本管理目录,比如 .svn,.cvs 之类的目录。像 Subversion 版本管理软件,会在每个目录下都建立名为 .svn 的目录,里面一般保存着目录下文件的最新版本,可以用来 revert 修改。不删除 .svn 目录,会使源代码包臃肿,而且最重要的是可能会有安全隐患。.svn 目录下还包含您的用户名和 SVN 服务器信息,可能您并不想让别人知道。但是如果您网速够快的话,可以重新 svn export 一份,而不是仅仅从您的 svn 树上拷贝一份出来,那就没有 .svn 目录了。

2. 规整一下编译过程,如果编译过程不规范,您应该添加一个 README。如果您的代码不是脚本,很可能是需要用户编译的。如果编译过程规范,*nix(Linux/Unix, CygWin, Mingw 等) 下就是 ./configure, make, make install,用户很容易理解。但如果编译过程不规范,您就最好添加一下 README 或者 INSTALL 文件,指导用户该如何编译。使用 MS VisualStudio 的用户要注意工程文件的整洁性,最好导出一个 Makefile(是的,VS 也可以用 Makefile),这样用户就不必打开项目,在 CMD 命令行用 nmake Makefile 就可以编译了。

3. 删除二进制中间文件。在 *nix 开发者中,这一般不难做到,Makefile 中一般都会写一个 clean 目标;但是 MS VS 用户一般不会注意那些编译时生成的 .obj 文件。源代码包就应该是源代码,最多包含可执行程序和文档,而不应该包含其它任何二进制的文件。否则您的源代码包就会很大,而且对用户也是困扰,到底哪些文件有用呢?

4. 修改编译目标从 debug 版本到 release 版本。*nix 下,这一般意味着 CFLAGS 要改成 -O2 而不是 -g;VS 一般意味着将目标从 debug 转为 release。这样用户生成的可执行程序才能足够小和足够快,他们如果有能力自己调试,会知道如何将选项改回去的。

5. 添加知识产权信息,就是授权协议。小程序大家一般都不在乎,但如果是您在这个项目上花了足够的心血,还是最好选择一个自己喜欢的授权协议。可以将协议声明放在每个源文件的最前注释中,也可以在项目的根目录下放一个 license 文件。

6. 不要用 rar 包。在 Windows 下推荐使用 zip 格式压缩;*nix 下推荐使用 .tar.gz 或者 .tar.bz2 格式。因为这些格式在这些系统上不需要安装额外的软件解压。WinRAR 是一个商业软件,而且 RAR 格式也是受版权保护的。

打包命令:

在 Windows 下,如果您使用开源软件 7-zip 来压缩 zip 包,可以使用这个命令(首先将 7-zip 可执行文件目录添加到 PATH 环境变量中):

7z a foo.zip foo

*nix 下,就是下面几个命令了:

tar czvf foo.tar.gz foo
tar cjvf foo.tar.bz2 foo
zip -r foo.zip foo

长按识别二维码关注《边际效应》
长按识别二维码关注《边际效应》

3 条评论

  • func
    2009-02-21

    automake生成的Makefile用make dist直接出包

  • Yousri
    2009-02-21

    注意事项说得挺全面的 只使用过别人的源代码程序编译打包为deb包过 期待接下来系列文章

  • 学习笔记2–应用程序打包技术(exe篇) | Zenglb's Blog
    2012-04-13

    [...] 感觉vs2008自带的打包程序太恶心了(要强制安装framework),然后网上搜寻良久找到这个~ 原文链接:http://blog.solrex.org/articles/packaging-1-src.html [...]

发表评论

电子邮件地址不会被公开。 必填项已用*标注