从源码开始(Hello World) 制作deb包

转载 2015年11月19日 21:07:00

http://www.douban.com/note/369020689/

1. create 一个目录 如下
mkdir hello

2. c 源码如下
root@evan-pc:~/deb# cat hello.c
#include <stdio.h>
int main(int argc, char* argv[])
{
     printf("Hello world!\n");
     return 0;
}
root@evan-pc:~/deb# cat Makefile
OBJS=hello.o
CC=gcc -g
all:$(OBJS)
        $(CC) -o hello $(OBJS)
clean:
        rm -f *.o hello
.PHONY:all clean

3. 我们make一下,测试程序编译是否有问题,然后在./hello检查程序是否正确执行.如果没问题进行下一步,如果有问题我们检查程序代码
root@evan-pc:~/deb# make
gcc -g -c -o hello.o hello.c
gcc -g -o hello hello.o

4、我们清理下刚才编译程序的垃圾,make clean一下
make clean
5、输入命令,切回上级目录
cd ..
6、 改名:因为文件名必须包含文件名还有版本号
mv hello hello-1.0
说明:文件名后必须用-,不能用_
tar zcvf hello_1.0.tar.gz hello-1.0
cd hello-1.0
root@evan-pc:~/hello-1.0# dh_make -e evan886@gmail.com -f ../hello_1.0.tar.gz

Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch?
 [s/i/m/l/k/n] s

Maintainer name : root
Email-Address : evan886@gmail.com
Date : Thu, 10 Jul 2014 16:25:54 +0800
Package Name : hello
Version : 1.0
License : blank
Type of Package : Single
Hit <enter> to confirm:
Done. Please edit the files in the debian/ subdirectory now. You should also
check that the hello Makefiles install into $DESTDIR and not in / .
#tar zcvf hello_1.0.orig.tar.gz hello-1.0
说明:压缩包的名字必须是包含文件名及版本号

7、开始打包
dpkg-buildpackage



root@evan-pc:~/hello-1.0# dpkg-buildpackage
dpkg-buildpackage: 源码包 hello
dpkg-buildpackage: 源码版本 1.0-1
dpkg-buildpackage: source distribution unstable
dpkg-buildpackage: 源码修改者 root <evan886@gmail.com>
dpkg-buildpackage: 主机架构 amd64
 dpkg-source --before-build hello-1.0
 debian/rules clean
dh clean
   dh_testdir
   dh_auto_clean
make[1]: 正在进入目录 `/root/hello-1.0'
rm -f *.o hello
make[1]:正在离开目录 `/root/hello-1.0'
   dh_clean
 dpkg-source -b hello-1.0
dpkg-source: info: using source format `3.0 (quilt)'
dpkg-source: info: building hello using existing ./hello_1.0.orig.tar.gz
dpkg-source: 警告: 忽略对文件 hello.o 的删除指令
dpkg-source: 警告: 忽略对文件 hello 的删除指令
dpkg-source: info: building hello in hello_1.0-1.debian.tar.gz
dpkg-source: info: building hello in hello_1.0-1.dsc
 debian/rules build
dh build
   dh_testdir
   dh_auto_configure
   dh_auto_build
make[1]: 正在进入目录 `/root/hello-1.0'
gcc -g -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -c -o hello.o hello.c
gcc -g -o hello hello.o
make[1]:正在离开目录 `/root/hello-1.0'
   dh_auto_test
 debian/rules binary
dh binary
   dh_testroot
   dh_prep
   dh_auto_install
   dh_installdocs
   dh_installchangelogs
   dh_perl
   dh_link
   dh_compress
   dh_fixperms
   dh_strip
   dh_makeshlibs
   dh_shlibdeps
   dh_installdeb
   dh_gencontrol
dpkg-gencontrol: 警告: Depends field of package hello: 未知的替换变量 ${shlibs:Depends}
dpkg-gencontrol: 警告: File::FcntlLock not available; using flock which is not NFS-safe
   dh_md5sums
   dh_builddeb
dpkg-deb:正在新建软件包 hello,包文件为 ../hello_1.0-1_amd64.deb。
 dpkg-genchanges >../hello_1.0-1_amd64.changes
dpkg-genchanges: 上传数据中包含完整的原始代码
 dpkg-source --after-build hello-1.0
dpkg-buildpackage: 完整上载(包含原始的代码)
root@evan-pc:~/hello-1.0#

打包成功,看到上级目录有 deb包就成功了( 我这里为hello_1.0-1_amd64.deb)
root@evan-pc:~/hello-1.0# ls ../hello
hello-1.0/ hello_1.0-1.debian.tar.gz hello_1.0.tar.gz
hello_1.0-1_amd64.changes hello_1.0-1.dsc
hello_1.0-1_amd64.deb hello_1.0.orig.tar.gz



问题 解决
root@evan-pc:~/deb# make
Makefile:4: *** 遗漏分隔符 。 停止。
root@evan-pc:~/deb# vim Makefile
root@evan-pc:~/deb# make
Makefile:6: *** 遗漏分隔符 。 停止。
root@evan-pc:~/deb# vim Makefile

用tab就搞定了

from http://www.linuxchina.net/?p=2074

终端彩色
cp /etc/skel/.bashrc ~/ && . /root/.bashrc

HelloWorld(java源代码)

  • 2012年11月17日 10:29
  • 125B
  • 下载

Ubuntu下制作deb包的方法详解

CSDN GitHub Ubuntu下deb包的方法详解 AderXCoding/system/tools/build_deb本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际...
  • gatieme
  • gatieme
  • 2016年10月16日 12:55
  • 6773

ubuntu下将可执行程序打包成deb包

最近的一个ubuntu下的项目需要提交测试验收了,于是需要我们将程序打包。 打包的本质是将原始文件压缩与相应的控制命令绑定,最后进行软件安装的时候是将对应文件解压到指定目录,根据我们提供的控制逻辑来进...
  • u010953266
  • u010953266
  • 2015年12月15日 17:38
  • 3000

ubuntu deb安装包制作方法介绍

方案一,基于dpkg-buildpackage1.准备工作1)重命名目标源码目录,目录名规则为文件名加大版本号,如下:2)测试编译代码,清楚残余无用文件安装libcurl开发包: apt-get i...
  • stone548534
  • stone548534
  • 2015年10月12日 11:12
  • 1471

Ubuntu16.04 怎样下载deb的源码包

转自:http://blog.csdn.net/yuanlu837/article/details/7750492 如何获取ubuntu源码包里面的源码? 1、在获取源码包之前,确保在软件源配...
  • MaoshiYIHAO
  • MaoshiYIHAO
  • 2017年04月29日 12:26
  • 929

从源码开始(Hello World) 制作deb包

http://www.douban.com/note/369020689/ 1. create 一个目录 如下 mkdir hello 2. c 源码如下 root@evan-pc:...
  • hshl1214
  • hshl1214
  • 2015年11月19日 21:07
  • 967

从源码开始制作deb包

1. create 一个目录 如下 mkdir hello 2. c 源码如下 root@evan-pc:~/deb# cat hello.c #include int main(...
  • qk1992919
  • qk1992919
  • 2017年11月28日 17:10
  • 57

Prism学习笔记(二)简单的MVVM模式

现在我们进入Prism的一条重要支柱MVVM模式。MVVM模式简单来说就是把页面UI和后台逻辑分开,这样做的好处是能使你的程序更容易测试,维护和改进。下面的图来自于Prism4的教程显示了MVVM模式...
  • xieqinghai
  • xieqinghai
  • 2012年01月19日 14:55
  • 1522

详解深谈Ubuntu编译源码包

对于绝大多数软件,我们建议您使用APT系统来安装它。在少数情况下,例如某软件没有以deb包的格式发布,或者您需要定制适合自己的软件,您可以通过Ubuntu编译源代码的方式安装它。   首先您需要...
  • u012210278
  • u012210278
  • 2014年09月25日 08:40
  • 1526

ubuntu 内核源码下载及编译

1.查看当前系统原码版本 $ apt-cache search linux-source linux-source - Linux kernel source with Ubuntu patc...
  • u010154760
  • u010154760
  • 2015年04月11日 13:17
  • 947
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从源码开始(Hello World) 制作deb包
举报原因:
原因补充:

(最多只允许输入30个字)