从源码开始(Hello World) 制作deb包
来源:互联网 发布:淘宝差评后可以退货吗 编辑:程序博客网 时间:2024/05/23 02:04
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
- 从源码开始(Hello World) 制作deb包
- 从源码开始制作deb包
- 制作Ubuntu的deb格式包 从Hello World做起
- 从Hello World开始
- 从hello world开始
- 从hello world 开始
- 从hello world开始
- 从Hello World 程序开始
- 开始用Tornado:从Hello World开始
- 开始用Tornado:从Hello World开始
- 从源码包构建deb二进制软件包
- Google Gadgets (1):从 Hello World 开始
- JavaFx中文入门教程--从Hello World开始
- 第一天:从"Hello World"开始
- 从Hello, world开始认识IL
- Objective-C 2.0 从Hello,World!开始
- 第一篇博客从hello world开始
- 从Hello World开始深入Ajax
- hdoj3836Equivalent Sets【scc +缩点】
- C++中定义一个由用户输入大小的vector
- iOS 九宫格
- 正则表达式
- RBAC用户权限管理数据库设计
- 从源码开始(Hello World) 制作deb包
- 如何在Cocos2D 1.0 中掩饰一个精灵(三)
- IOS单例类模式
- 共享大数据好资源
- android中可能造成内存泄露的几种方式
- spring事务配置的五种方式
- 二维数组form传值
- 线程堆栈大小 pthread_attr_setstacksize 的使用【转】 http://www.cnblogs.com/qq78292959/archive/2012/03/29/2423821
- git常见问题