linux-rpm 打包之helloworld
来源:互联网 发布:淘宝店铺的公司介绍 编辑:程序博客网 时间:2024/04/29 13:04
关于linux下rpm打包的一个小例子,称为helloworld吧。
本文受 这个同志启发 : http://www.worldhello.net/2011/04/02/2405.html :此处致敬~
另外,本文会不断修改。
一、rpm打包准备工作
- rpm打包需要一个独立的打包目录
目录结构:
BUILD, BUILDROOT, RPMS, SOURCES, SPECS, SRPMS
创建该目录命令: mkdir -pv ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS},其中,这些目录放在rpmbuild目录下。
- 接下来需要对rpm进行配置
echo ~/rpmbuild > ~/.rpmmacros,该命令将"~/rpmbuild"作为rpm打包目录
二、打包过程
打包helloworld需要程序sources文件,spec文件
- 编写helloworld源文件(hello.c)
- #include <stdio.h>
- int main()
- {
- printf("Hello, World!\n");
- return 0;
- }
- 编写helloworld的spec文件(hello.spec)
- BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
- # 不明白这样定义啥意思
- Summary: hello world rpm package
- Name: hello
- Version: 0.1
- Release: 1
- Source: hello-0.1.tar.gz
- License: GPL
- Packager: wangdonglei
- Group: Application
- %description
- This is a simple example for rpm package!
- %prep
- %setup -q
- %build
- gcc -o hello hello.c
- %install
- mkdir -p %{buildroot}/usr/local/bin
- install -m 755 hello %{buildroot}/usr/local/bin/hello
- %files
- # 这里的路径是在buildroot虚拟根基础上的,即%{buildroot}/%{name}-%{version}-%{release}-root/usr/local/bin/hello
- /usr/local/bin/hello
- 将文件放入相应位置并执行打包命令
- # 将hello.c放入目录hello-0.1并打包该目录
- tar zcvf hello-0.1.tar.gz hello-0.1
- # 将hello-0.1.tar.gz 放入SOURCES下
- mv hello-0.1.tar.gz /root/rpmbuild/SOURCES
打包
- rpm -ba rpmbuild/SPECS/hello.spec
- 打包后文件
执行打包命令后,这时会逐个运行hello.spec文件的内容,最终生成两个文件,一个包含源码的rpm包和一个二进制rpm包。
rpmbuild/SRPMS/hello-0.1-1.src.rpmrpmbuild/RPMS/i386/hello-0.1-1.i386.rpm
- linux-rpm 打包之helloworld
- linux-rpm 打包之helloworld
- RPM打包helloworld
- linux RPM 打包
- Linux --rpm 打包
- Linux:RPM 打包记录
- maven打包之helloWorld
- 【linux】自定义rpm打包路径
- linux之rpm命令
- linux之rpm
- linux命令之rpm
- linux-RPM 打包原理 SPEC 编写规范
- 在Linux(CentOS)上打包应用程序RPM
- linux之helloworld编写
- linux驱动之helloworld
- rpm打包
- rpm打包
- rpm打包
- listview中嵌套gridview时候,getview多次调用的bug
- WIZnet 11月新闻报
- 本地推送
- hdu 2544(Dijkstra)
- Linux下如何使用Vi编辑器
- linux-rpm 打包之helloworld
- AndroidAnnotations——Annotation recipes 注解使用方法
- Date、Calendar、Timestamp
- Qt函数quit(),exit()以及close()的区别
- 详解大端模式和小端模式
- android The method setOnClickListener(View.OnClickListener) in the type View is not applicable for
- 【二分图匹配(最小路径覆盖)】hdu 1151 Air Raid
- layout_weight 用于几个控件分享剩余的空间。而不是分享父控件的所有空间。
- 2014创新工场校园招聘笔试题(9.16北京)