构建Qt5应用程序的RPM



前置任务。我在从源代码构建RPM时遇到了麻烦。它是用Qt5.7.0在Qt5中编写的。我的系统是Fedora 24。我安装了qt-opensource-linux-x64-5.7.0.run并成功构建了我的代码。但在构建RPM时,我在安装阶段出现了错误。

我的RPM文件如下。

名称:KPIViewer版本:1.0版本:1%{?dist}摘要:KPIViewer组:应用程序/生产力许可证:super2lao@gmail.com#来源0:%{name}-%{version}-%(发布).tar.gz来源0:%{name}-%{版本}.tar.gz#BuildArch:i386BuildRoot:%{_tmppath}/%{name}-root包装商:PhonPanom SivilayUrl:[http://www.kjbsoft.com]供应商:PhonPanom Sivilay需要:libtool%定义QT_LIB/opt/Qt5.7.0/5.7/gcc_64/LIB/%说明KPI查看器%准备%设置-q-n%{name}-%{版本}%构建#%配置qmake KPIViewer.pro使%{?_smp_mflags}BINDIR=%{_BINDIR}%安装mkdir-p$RPM_BUILD_ROOT/usr/{bin,share}mkdir-p$RPM_BUILD_ROOT/usr/bin/%{name}mkdir-p$RPM_BUILD_ROOT/usr/bin/%{name}/platformsmkdir-p$RPM_BUILD_ROOT/usr/share/{应用程序,像素映射}mkdir-p$RPM_BUILD_ROOT%{QT_LIB}安装%{name}$RPM_BUILD_ROOT/usr/bin/%{name}#安装%{name}.sh$RPM_BUILD_ROOT/usr/bin/%{name}#安装%{QT_LIB}libQt5*.so.*$RPM_BUILD_ROOT/usr/bin/%{name}#安装%{QT_LIB}libicu*.so.*$RPM_BUILD_ROOT/usr/bin/%{name}#安装%{QT_LIB}libq*$RPM_BUILD_ROOT/usr/bin/%{name}/平台安装%{QT_LIB}libQt5*.so.*$RPM_BUILD_ROOT%{QT_LIB}安装%{QT_LIB}libicu*.so.*$RPM_BUILD_ROOT%{QT_LIB}安装%{QT_LIB}libq*$RPM_BUILD_ROOT%{QT_LIB}#安装%{name}.desktop$RPM_BUILD_ROOT/usr/share/applications#安装%{name}.png$RPM_BUILD_ROOT/usr/share/pixmaps%文件%defattr(-,root,root)%{_bindir}/%{name}/%{name}%{_bindir}/%{name}/%{name}.sh%{_bindir}/%{name}/libicu*%{_bindir}/%{name}/libQt5*%{_bindir}/%{name}/platforms/libq*%{_datadir}/applications/%{name}.桌面%{_datadir}/pixmaps/%{name}.png%清洁rm-rf$RPM_BUILD_ROOTrm-rf$RPM_BUILD_DIR%变更日志*2016年8月29日星期一super2lao-初始构建

但在安装阶段,我会遇到以下错误。

从/home/makerrpm/rpmbuild/BUILDROOT/KPIViewer-1.0-1.fc24.x86_64/usr/bin/KPIViewer/KPIViewer提取调试信息从/home/makerrpm/rpmbuild/BUILDROOT/KPIViewer-1.0-1.fc24.x86_64/opt/Qt5.7.0/5.7/gcc_64/lib/libcudata.so.56.1中提取调试信息xz:/tmp/tmp.JB9sU3EDbZ:没有这样的文件或目录objcopy:无法打开:/tmp/tmp.JB9sU3EDbZ.xz:没有这样的文件或目录从/home/makerrpm/rpmbuild/BUILDROOT/KPIViewer-1.0-1.fc24.x86_64/opt/Qt5.7.0/5.7/gcc_64/lib/libcui18n.so.56提取调试信息从/home/makerrpm/rpmbuild/BUILDROOT/KPIViewer-1.0-1.fc24.x86_64/opt/Qt5.7.0/5.7/gcc_64/lib/libcudata.so.56提取调试信息xz:/tmp/tmp.WVrLRUiOv4:没有这样的文件或目录objcopy:无法打开:/tmp/tmp.WVrLRUiOv4.xz:没有这样的文件或目录***警告:相同的二进制文件被复制,而不是链接:/opt/Qt5.7.0/5.7/gcc_64/lib/libicudata.so.56和/opt/Qt5.7.0/5.7/gcc_64/lib/libcudata.so.56.1从/home/makerrpm/rpmbuild/BUILDROOT/KPIViewer-1.0-1.fc24.x86_64/opt/Qt5.7.0/5.7/gcc_64/lib/libcui18n.so.56.1提取调试信息***警告:相同的二进制文件被复制,而不是链接:/opt/Qt5.7.0/5.7/gcc_64/lib/libcui18n.so.56.1和/opt/Qt5.7.0/5.7/gcc_64/lib/libcui18n.so.56从/home/makerrpm/rpmbuild/BUILDROOT/KPIViewer-1.0-1.fc24.x86_64/opt/Qt5.7.0/5.7/gcc_64/lib/libicuuc.so.56提取调试信息从/home/makerrpm/rpmbuild/BUILDROOT/KPIViewer-1.0-1.fc24.x86_64/opt/Qt5.7.0/5.7/gcc_64/lib/libicuuc.so.56.1提取调试信息***警告:相同的二进制文件被复制,而不是链接:/opt/Qt5.7.0/5.7/gcc_64/lib/libicuuc.so.56.1和/opt/Qt5.7.0/5.7/gcc_64/lib/libicuuc.so.56dwz:用于多文件优化的文件太少/usr/lib/rmp/sepdebugcrfix:更新了0个CRC32,7个CRC32。+"["%{buildarch}"=noarch"]"+QA_CHECK_RPATHS=1+中的case"${QA_CHECK_RPATHS:-}"+/usr/lib/rmp/check-rpaths*********************************************************************************警告:"check rpaths"检测到一个损坏的RPATH,并将导致"rpmbuild"*失败。要忽略这些错误,可以设置"$QA_RPATHS"*环境变量,它是允许值的位掩码*下面。QA_RPATHS的当前值为0x0000。**0x0001。。。标准RPATH(例如/usr/lib);这样的RPATH是次要的*问题,但正在引入冗余搜索路径*提供利益。它们也可能导致多重分支中的错误*环境。*0x0002。。。无效的RPATH;这些是既不是绝对的RPATH*也不是相对文件名,因此可能存在安全风险*0x0004。。。不安全的RPATH;这些是相对RPATH,它们是*安全风险*0x0008。。。特殊的"$ORIGIN"RPATH出现在其他*RPATH;这只是一个小问题,但通常是不需要的*0x0010。。。RPATH为空;没有理由进行这样的RPATH*并且在加载库时会导致不必要的工作*0x0020。。。RPATH引用了".."绝对路径;这个会坏的*".."之前的路径时的功能是符号链接***示例:*-要忽略标准和空的RPATH,请执行类似的"rpmbuild"*$QA_RPATHS=$((0x0001|0x0010))rpmbuild my-package.src.rpm*-若要检查现有文件,请设置$RPM_BUILD_ROOT并执行以下检查路径*$RPM_BUILD_ROOT=/usr/lib/rmp/check-rpaths********************************************************************************错误0002:文件"/usr/bin/KPIViewer/KPIViewer"在[/opt/Qt5.7.0/5.7/gcc-64/lib]中包含无效的rpath"/opt/Qt5.7.0/5.7/gcc_64/lib"错误:/var/tmp/rpm-tmp.CbBYR1的退出状态不正确(%install)RPM构建错误:/var/tmp/rpm-tmp.CbBYR1(%install)的退出状态不正确

我的错是什么?请帮帮我。谢谢你抽出时间。

Fedora在这里解释了如何修复它。

这通常对我有效,在调用configure:之后的规范文件中

%configure
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool

相关内容

  • 没有找到相关文章

最新更新