为什么rpmbuild需要这些C++库,这会导致这个错误?

为什么rpmbuild需要这些C++库,这会导致这个错误?

问题描述:

我是新来的RPM包装,但rpmbuild似乎需要C++标准库,我不知道为什么。为什么rpmbuild需要这些C++库,这会导致这个错误?

下面是RPM说明文件:

Name: go-github-release-test 
Version: 0.0.1 
Release: 1 
License: LICENSE 
Url: 
Summary: Test of go-github-release process 

%description 
Test of go-github-release process 

%prep 

%build 

%install 
mkdir -p %{buildroot}/%{_bindir} 
cp /root/go-github-release-test/build/go-github-release-test %{buildroot}/%{_bindir} 


%files 
%{_bindir}/go-github-release-test 


%clean 

%changelog 

* Fri Jun 09 2017 Jerry W - 0.0.1-1 
- added text to readme 
- add CmakeLists.txt 
- add appveyor.yml and travis.yml 
- add gitignore 
- moved main cpp around 
- added helloworld.cpp 
- added detectme.txt 
- removed test dirlist 
- added readme 
- init: bump script 
- initial commit 

这里是日志显示,它的失败,因为它包括拱特定的C++库生成一个“noarch”软件包,尽管我还没有提到他们的任何地方:

[[email protected] go-github-release-test]# rpmbuild --target noarch -bb pkg-build/SPECS/go-github-release-test.spec --define "_topdir /root/go-github-release-test/pkg-build" 
Building target platforms: noarch 
Building for target noarch 
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.aEY2Y9 
+ umask 022 
+ cd /root/go-github-release-test/pkg-build/BUILD 
+ exit 0 
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.jOeknE 
+ umask 022 
+ cd /root/go-github-release-test/pkg-build/BUILD 
+ exit 0 
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.PZA4L8 
+ umask 022 
+ cd /root/go-github-release-test/pkg-build/BUILD 
+ '[' /root/go-github-release-test/pkg-build/BUILDROOT/go-github-release-test-0.0.1-1.noarch '!='/']' 
+ rm -rf /root/go-github-release-test/pkg-build/BUILDROOT/go-github-release-test-0.0.1-1.noarch 
++ dirname /root/go-github-release-test/pkg-build/BUILDROOT/go-github-release-test-0.0.1-1.noarch 
+ mkdir -p /root/go-github-release-test/pkg-build/BUILDROOT 
+ mkdir /root/go-github-release-test/pkg-build/BUILDROOT/go-github-release-test-0.0.1-1.noarch 
+ mkdir -p /root/go-github-release-test/pkg-build/BUILDROOT/go-github-release-test-0.0.1-1.noarch//usr/bin 
+ cp /root/go-github-release-test/build/go-github-release-test /root/go-github-release-test/pkg-build/BUILDROOT/go-github-release-test-0.0.1-1.noarch//usr/bin 
+ /usr/lib/rpm/check-buildroot 
+ /usr/lib/rpm/redhat/brp-compress 
+ /usr/lib/rpm/redhat/brp-strip /usr/bin/strip 
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump 
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip 
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1 
+ /usr/lib/rpm/redhat/brp-python-hardlink 
+ /usr/lib/rpm/redhat/brp-java-repack-jars 
Processing files: go-github-release-test-0.0.1-1.noarch 
Provides: go-github-release-test = 0.0.1-1 
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 
Requires: libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libgcc_s.so.1()(64bit) libm.so.6()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(GLIBCXX_3.4)(64bit) rtld(GNU_HASH) 
error: Arch dependent binaries in noarch package 


RPM build errors: 
    Arch dependent binaries in noarch package 
+0

您是否将文件从root用户的主目录复制到RPM中?该文件是预先构建的二进制RPM吗? – mattdm

答案是的rpmbuild使用自动相关性生成使用ldd命令被包括在所述文件%部分中的任何二进制:

http://ftp.rpm.org/max-rpm/s1-rpm-depend-auto-depend.html

+0

请注意,实际实现今天有点不同,但效果基本相同:默认情况下,任何发货的ELF二进制都会自动生成依赖关系。 –