您的位置:首页 > 其它

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

2015-11-19 21:07 330 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: