linux make configure cmake rpmbuild入门最简单的hello world

入门最简单的hello world

sudo yum install cmake automake

需要使用的命令make autoscan aclocal autoconf automake cmake

一、新建一个C文件
vi hello.c

#include <stdio.h>

int main (int argc,char **argv)
{
printf("hello word!\n");
}
手动编译
gcc hello.c -o hello
运行测试
./hello
二、新建一个Makeifle,实现自动编译及安装
vi Makeifle

all:
	gcc hello.c -o hello
install:
	sudo cp hello /bin/hello
uninstall:
	sudo rm -rf /bin/hello
clean:
	sudo rm -rf hello
注意:上面的不是空格,是一个TAB键,不然会提示错误。
三、测试命令
编译
make
安装 
make install
卸载 
make uninstall 
清除
make clean
运行测试
hello
四、使用cmake构建工程
1、新建CMakeLists.txt注意大小写
vi CMakeLists.txt

cmake_minimum_required(VERSION 3.8)
project(hello)
set(CMAKE_CXX_STANDARD 11)
add_executable(hello hello.c)
第一行要求最小的cmake版本
第二行工程名称
第三行使用标准C版本
第四行源文件及生成文件
2、配置构建
cmake .
3、编译
make
4、安装及删除
sudo make install
sudo make uninstall
五、使用automake构建工程
1、自动扫描
使用autoscan命令生成configure.scan
2、复制文件
cp configure.scan configure.ac
3、修改文件vi configure.ac如下:
AC_PREREQ([2.71])
AC_INIT(hello.c)
AM_INIT_AUTOMAKE(hello,1.0)
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT(Makefile)
4、使用aclocal命令
5、使用autoconf命令
6、修改文件 vi Makefile.am如下:
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS = hello
hello_SOURCES = hello.c
7、使用automake --add-missing
将Makefile.am 转为Makefile.in
8生成configure文件
测试 
./configure --prefix=/usr
make 
sudo make install
sudo make uninstall
六、linux环境下RPM打包
1、准备工作
安装环境依赖包
sudo yum install  rpm-build rpm-devel rpmlint fftw-devel bash coreutils diffutils patch rpmdevtools

2、RPM目录
BUILD目录:	    %_builddir	    tar.gz包解压缩位置在此编译安装
SPECS目录:	    %_specdir	    SPEC文件
RPMS目录:	    %_rpmdir	    rpm包
SOURCES目录:	%_sourcedir	    源代码
SRPMS目录:	    %_srcrpmdir	    srpm包
BUILDROOT目录:	%_buildrootdir	make install临时./configure中—prefix指定path的
3、制作过程
读取并解析spec 文件
运行 %prep 将源代码解包临时目录并打补丁。
运行 %build 编译。
运行 %install 将代码安装目录。
读取 %files 收集、创建RPM 文件。
运行 %clean 清除临时目录。
4、rpmbuild用法
rpmbuild -bp 执行到%prep
rpmbuild -bc 执行到%build中的config
rpmbuild -bi 执行到%build中的install
rpmbuild -ba 制作rpm包和src.rpm包
rpmbuild -bs 制作src.rpm包
rpmbuild -bb 制作rpm包
5、SPEC文件说明
Name	与SPEC一致
Version	软件上游版本号。
Release	RPM 软件版本号。初始值通常应为 1%{?dist}。
Summary	RPM 包的简要说明
License	软件许可证。
URL	打包的软件的上游项目网站。
Source0	上游源代码的压缩归档的路径,如:Source1,Source2,Source3等。
Patch0	补丁,如:Patch1,Patch2,Patch3 等。
BuildArch	表示 RPM 包架构。若不依赖于体系结构 BuildArch:noarch。
BuildRequires	编译依赖包列表,以逗号分隔。
Requires	安装依赖包列表,以逗号分隔。
ExcludeArch	如果某个软件无法在特定处理器架构下运行,在此进行指定。
6、宏代码
%{_sysconfdir}        /etc
%{_prefix}            /usr
%{_exec_prefix}       %{_prefix}
%{_bindir}            %{_exec_prefix}/bin
%{_libdir}            %{_exec_prefix}/%{_lib}
%{_libexecdir}        %{_exec_prefix}/libexec
%{_sbindir}           %{_exec_prefix}/sbin
%{_sharedstatedir}    /var/lib
%{_datarootdir}       %{_prefix}/share
%{_datadir}           %{_datarootdir}
%{_includedir}        %{_prefix}/include
%{_infodir}           /usr/share/info
%{_mandir}            /usr/share/man
%{_localstatedir}     /var
%{_initddir}          %{_sysconfdir}/rc.d/init.d
%{_var}               /var
%{_tmppath}           %{_var}/tmp
%{_usr}               /usr
%{_usrsrc}            %{_usr}/src
%{_lib}               lib (lib64 on 64bit multilib systems)
%{_docdir}            %{_datadir}/doc
%{buildroot}          %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}
$RPM_BUILD_ROOT       %{buildroot}
7、实例hello word
a、将上面的文件打包,作为测试,可以添加README文件
tar czvf hello-0.1-1.tar.gz hello
把压缩的文件复制到~/rpmbuild/SOURCES目录下
cd ~/rpmbuild/SPECS
b、编写SPECS文件vi hello.SPECS如下:
Summary: the First RPM for test
Name: hello
Version: 0.1
Release: 1
License: GPL
Group: Development/System
Source0:hello-0.1-1.tar.gz
#Patch0:hello-0.1-1.patch
%description
print hello world
%prep
tar xzvf %_sourcedir/hello-0.1-1.tar.gz -C %_builddir/
#tar xzvf $RPM_SOURCE_DIR/hello-0.1-1.tar.gz -C $RPM_BUILD_DIR/
#%patch -p0
%build
cd $RPM_BUILD_DIR/hello
#在这里可以用./configre 或cmake来配置,可以根据上面的实际配置,哪个都行
make
%install
cd $RPM_BUILD_DIR/hello
make install
mkdir -p %{buildroot}%{_bindir}
install -p -m 755 hello $RPM_BUILD_ROOT%{_bindir}/hello
#mkdir -p %{buildroot}/usr/bin
#cp hello %{buildroot}/usr/bin/hello 
%clean
rm -rf $RPM_BUILD_DIR/hello
%files
%defattr(-,root,root)
%{_bindir}/hello
%doc $RPM_BUILD_DIR/hello/README
%changelog
c、使用RPM打包命令测试
rpmbuild -bp
rpmbilld -bc
rpmbilld -bi
rpmbilld -ba
d、测试安装
sudo rpm -ivh XXXX.rpm

猜你喜欢

转载自blog.csdn.net/lenovo8088/article/details/114678574