x86-64マシンでi386ターゲットのrpmをビルドするにはどうすればよいですか?


8

私はrpmbuild次のようにコマンドを使用してrpmを構築しています:

rpmbuild -bb --root <DIRECTORY> --target i386 --define "_topdir <DIRECTORY>" <specfile>.spec

SLED 10 SP3 x86マシンを使用すると、正常に動作します。しかし、私のSLES 10 SP3 x64仮想マシンでは、次のエラーが発生します。

error: No compatible architectures found for build

最初は--targetオプションを使用していませんでしたが、それでもx86マシンで実行されていましたが、x64マシンでも同じエラーが発生しました。

このエラーを解決するために私を助けてください

回答:


6

rpm、specファイル、rpmbuildに関するFedoraのドキュメントから:

The --target option sets the target architecture at build time. Chapter 3,
Using RPM covers how you can use the --ignoreos and --ignorearch options 
when installing RPMs to ignore the operating system and architecture that 
is flagged within the RPM. Of course, this works only if you are installing 
on a compatible architecture.

On the surface level, the --target option overrides some of the macros in 
the spec file, %_target, %_target_arch, and %_target_os. This flags the RPM 
for the new target platform.

Under the covers, setting the architecture macros is not enough. You really 
cannot create a PowerPC executable, for example, on an Intel-architecture 
machine, unless you have a PowerPC cross compiler, a compiler that can make 
PowerPC executables.

http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch-rpmbuild.html

したがって、それが言うように、追加のコンパイラーがインストールされていることを確認してください(例えば、gcc.i686&gcc.x86_64)。


はい。スニペットでも言及されているように、この用語はクロスコンパイラです。それはあなたがインストールする必要があるものであり、それを行う方法はかなり文書化されているはずです(クロスコンパイルは、通常のユーザーが頻繁に遭遇するものではありませんが、開発者の間ではかなり一般的です)。
CVn

3

「-bb」フラグを使用しているので、バイナリからビルドしているので、他のアーキテクチャ用のコンパイラをインストールする必要はありません。

スペックファイルの "Buildarch"行を削除して、コマンドラインから渡すだけです。

--target i386

または

--target x86_64

そして、それはあなたのためにrpmを作成するはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.