centos7中如何打包用户目录

centos7中如何打包用户目录,第1张

一、RPM打包的目的

1、当目标机中不存在编译环境时,可以先在本地环境中编译打包,然后直接在目标机中用rpm -ivh rpm安装即可。

2、当需要在目标机中安装多个软件或者增加多个文件时,可以将整体打成RPM包,方便使用。

二、RPM打包命令

$cd ~ #进入home目录 $ sudo yum -y install rpmdevtools #安装rpm打包所需的工具 $rpmdev-setuptree #生成rpm打包目录 $cd rpmbuild/SPECS #进入SPECS目录 $rpmdev-newspec testspec #生成spec文件模板 $mv your_path/sourcetargz /SOURCES #将要打包的源码以targz的格式移动到SOURCES目录

此时会在home目录下生成一个rpmbuild目录,此目录下有五个子目录 BUILD 编译时所用的暂存目录 RPMS 放打包好的二进制rpm包 SOURCES 放置源代码和补丁文件 SPECS 放置spec文件 SRPMS 放置RPM源码包

三、spec文件简要说明

RPM打包的关键之处就在于spec文件的编写

1、spec基本信息

Name: 软件名称 Version: 软件版本 Release: 发布次数 如: 1%{dist} Summary: 软件说明 Group: 软件分组 License: 授权模式,例如 GPL,即自由软件 URL: 源码包的URL地址,可随意填写 Source0: 源码包,可指定多个,下面可用%{SOURCE0}变量引用 BuildRoot: 编译过程中的中间存档目录,考虑到多用户的环境,一般定义为: %{_tmppath}/%{name}-%{version}-%{release}-root , 后面可使用$RPM_BUILD_ROOT 方式引用 BuildArch: 平台 %{_arch} BuildRequires: 编译过程依赖的工具 Requires: 打包生成的rpm包安装时所依赖的软件包 %description 说明文档 %prep 准备部分,比如创建目录,解压源码包等,可使用%setup内部函数 %build 在BUILD目录编译,可使用%configure内部函数,或者其他编译工具,如cmake, perl等 %install 安装到BUILDROOT虚拟目录 %clean 清理文件 %files 将指定的文件添加到rpm包中,文档类型可用%doc,配置文件可 用%config %changelog 更新记录格式: 第一行 " 日期 作者 " 第二行 "- 更新内容" 最终的生成的rpm名称: {Name}-{Version}-{Relesae}-{BuildArch}rpm

2、spec内部变量

在spec文件运行时,定义的宏会主动读取/usr/lib/rpm/macros中的变量

RPM_BUILD_DIR ~/rpmbuild/BUILD

RPM_BUILD_ROOT ~/rpmbuild/BUILDROOT

3、spec文件示例(以git为例)

Name: git Version: 210 Release: 1%{dist} Summary: this is the test code License: GPL URL: >

    Qt-452用从网上下载到的qt-x11-opensource-src-452targz编译后安装得到;QtEmbedded-452-arm用qt-embedded-linux-opensource-src-452targz编译后安装得到,Qt-embedded-linux-opensource-src-452targz还可以编译成Qt Embedded-452-X86,但不需要。在编译qt-embedded-linux-opensource-src-452targz之前,必须准备好arm-linux-gcc交叉编译工具,用的是arm-linux-gcc-341。

所以先要准备好的软件包有:

Pc的 *** 作系统是:LINUX-ubuntu804。

下面是具体编译安装过程:

1、Qt-452的获得将qt-x11-opensource-src-452targz复制到目录:/home/chh/Project/qt,

2、然后解压:

#tar zxvf qt-x11-opensource-src-452targz

得到一个新目录:qt-x11-opensource-src-452

cd进入这个目录,准备开始编译。

3、在终端中这样 *** 作:

#/configure –qvfb     //编译配置,此过程大概历时几分钟;  #make                  //正式编译,过程漫长,大概2个多小时;  #cd tools/qvfb            //进入此目录,准备对它进行编译  #make                   //编译,几分钟  #cd /                  //回到qt-x11-opensource-src-452主目录,准备安装  #make install        //安装,十几分钟吧;

4、此步必须以root身份完成,否则无法建立目录

5、可以在/usr/local/下看到一个Trolltech目录,进入该目录发现Qt-452目录已经出现,进入里面的bin目录,Designer等工具已经可以使用了。

6、编译过程相当费时,所以可以直接拷贝已经编译过的源码,直接make install。

7、至此,Qt-452的安装已经顺利完成。

    QtEmbedded-452-arm的获得

在编译安装qt-embedded-linux-opensource-src-452之前,必须先配置好arm-linux-gcc,将arm-linux-gcc-341tarbz2解压到目录:/usr/local下,此时local下出现一个名为arm的目录,然后配置好环境变量:在/etc/profile添加一句:export PATH=$PATH:/usr/local/arm/341/bin,保存后#source /etc/profile一下,让它即时生效。 否则下面的编译过程会提示找不到arm-linux-gcc命令。  现在可以开始编译了:

将qt-embedded-linux-opensource-src-452targz复制到目录:/home/chh/Project/qt, 然后解压:#tar zxvf qt-embedded-linux-opensource-srctargz,   得到新目录qt-embedded-linux-opensource-src-452。

    进入qt-embedded-linux-opensource-src-452目录,首先进行configure。 这里的参数很重要,必不可少的是-embedded arm,所以最简单的配置信息可以这样:

/configure \  -embedded arm

然后回车,就开始configure了,参数设置和参考文章一样,裁减了很多,减少了编译时间:

/configure \  -release \  -shared \  -fast \  -no-largefile \  -qt-sql-sqlite \  -no-qt3support \  -no-xmlpatterns \  -no-mmx \  -no-3dnow \  -no-sse \  -no-sse2 \  -no-svg \  -no-webkit \  -qt-zlib \  -qt-gif \  -qt-libtiff \  -qt-libpng \  -qt-libmng \  -qt-libjpeg \  -make libs \  -xplatform qws/linux-arm-g++ \  -nomake tools \  -nomake examples \  -nomake docs \  -nomake demo \  -no-nis \  -no-cups \  -no-iconv \  -no-dbus \  -no-openssl \  -embedded arm \  -little-endian \  -qt-freetype \  -depths 16,18 \  -qt-gfx-linuxfb \  -no-gfx-transformed \  -no-gfx-multiscreen \  -no-gfx-vnc \  -no-gfx-qvfb \  -qt-kbd-usb \  -no-glib

之后就可以编译了,#make,漫长等待后再 #make install。Make install还是需要root权限。

     完成后,在/usr/local/Trolltech下多了一个目录:Qt Embedded-452-arm。

qt下载地址,里面东西很全:

ftp://ftptrolltechcom/pub/qt/source

详情参考这个帖子:

[转]Qt Qt/E Qtopia 的关系

>

简答:

gcc可以运行在arm-linux下。

gcc,可以在arm平台上运行。

详解:

gcc,一般指的是,pc版,x86的平台,

用于嵌入式系统,比如arm的cpu,linux的系统下,是:

本来,一直就可以的,

而且有专门的属于:

交叉编译

简答说就是:

在你的pc端,x86的cpu上,制作出一个交叉编译器

一般叫做arm-linux-gcc

用此arm-linux-gcc去编译你的程序

编译出来的程序,可以运行在嵌入式开发板,比如arm的linux下

极其详尽的解释:

我刚写个教程,你去看就知道了:

交叉编译详解

交叉编译详解

此教程的主要内容包括:

了什么是交叉编译

为何要有交叉编译

什么是工具链

什么是交叉工具链

交叉编译器的名字的命名规则:包括你这里所说的arm-linux-gcc的含义

如何获得交叉编译器

制作交叉编译器的各种工具:简介了常见的crosstool-ng,buildroot,crosstool等等工具

使用已有的交叉编译器和自己手动编译交叉编译器之间的对比

交叉编译方面的心得和注意事项

等你看完了后,建议用crosstool-ng,或者是buildroot去自己编译一个arm-linux的gcc。

batoceralinux基于buildroot。您可以将buildroot视为Linux发行版,同时维护基本软件包。但是,它是构建根文件系统(如固件)的工具。batoceralinux主要包括buildroot(仿真器)和配置上不可用的额外软件包。

关于buildroot的更多信息可以在这里找到: >

arm-linux-ld 是连接器,它把一些目标和归档文件结合在一起,重定位数据,并连接符号引用。通常,建立一个新编译程序的最后一步就是调用ld。

arm-linux-gcc -wall -O2 -c -o $@ $<

-o 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件

-Wall 指定产生全部的警告信息

-O2 编译器对程序提供的编译优化选项,在编译的时候使用该选项,可以使生成的执行文件的执行效率提高

-c 表示只要求编译器进行编译,而不要进行链接,生成以源文件的文件名命名但把其后缀由 c 或 cc 变成 o 的目标文件

-S 只激活预处理和编译,就是指把文件编译成为汇编代码

arm-linux-ld 直接指定代码段,数据段,BSS段的起始地址

-Tbss ADDRESS Set address of bss section

-Tdata ADDRESS Set address of data section

-Ttext ADDRESS Set address of text section

示例:

${CROSS}ld -Ttext=0x33000000 ledo -o ledelf

使用连接脚本设置地址:

arm-linux-ld -Tbeeplds starto beepo -o beepelf

其中beeplds 为连接脚本如下:

arm-linux-objcopy被用来复制一个目标文件的内容到另一个文件中,可用于不同源文件的之间的格式转换

示例:

arm-linux-objcopy –o binary –S elf_file bin_file

常用的选项:

input-file , outflie

输入和输出文件,如果没有outfile,则输出文件名为输入文件名

2-l bfdname或—input-target=bfdname

用来指明源文件的格式,bfdname是BFD库中描述的标准格式名,如果没指明,则arm-linux-objcopy自己分析

3-O bfdname 输出的格式

4-F bfdname 同时指明源文件,目的文件的格式

5-R sectionname 从输出文件中删除掉所有名为sectionname的段

6-S 不从源文件中复制重定位信息和符号信息到目标文件中

7-g 不从源文件中复制调试符号到目标文件中

arm-linux-objdump

查看目标文件(o文件)和库文件(a文件)信息

arm-linux-objdump -D -m arm beepelf > beepdis

-D 显示文件中所有汇编信息

-m machine

指定反汇编目标文件时使用的架构,当待反汇编文件本身没有描述架构信息的时候(比如S-records),这个选项很有用。可以用-i选项列出这里能够指定的架构

[guowenxue@localhost asm_c_buzzer]$ cat beeplds

/

File: beeplds

Version: 100

Copyright: 2011 (c) Guo Wenxue

Description: Cross tool link text, refer to u-bootlds

ChangeLog: 1, Release initial version on "Mon Mar 21 21:09:52 CST 2011"

/

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")

OUTPUT_ARCH(arm)

ENTRY(_start)

SECTIONS{

= 0x33000000;

text : {

(text)

(rodata)

}

data ALIGN(4): {

(data)

}

bss ALIGN(4): {

(bss)

}

}

[guowenxue@localhost asm_c_buzzer]$ cat makefile

#

# File: makefile

# Version: 100

# Copyright: 2011 (c) Guo Wenxue

# Description: Makefile used to cross compile the ASM and C source code

# ChangeLog: 1, Release initial version on "Mon Mar 21 21:09:52 CST 2011"

#

#

CROSS = /opt/buildroot-201102/arm920t/usr/bin/arm-linux-

CFLAGS =

beepbin: startS beepc

arm-linux-gcc $(CFLAGS) -c -o starto startS

arm-linux-gcc $(CFLAGS) -c -o beepo beepc

arm-linux-ld -Tbeeplds starto beepo -o beepelf

arm-linux-objcopy -O binary -S beepelf beepbin

rm -f elf o

install:

cp beepbin ~/winxp -f --reply=yes

clean:

rm -f elf o

rm -f beepbin

以上就是关于centos7中如何打包用户目录全部的内容,包括:centos7中如何打包用户目录、如何在Windows下构建ARM Linux QT开发环境、Linux下的QTE下载路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/10115987.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存