Come posso creare un numero di giri per target i386 su una macchina x86-64?


8

Sto costruendo un numero di giri usando il rpmbuildcomando come:

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

Quando uso la mia macchina SL86 10 SP3 x86, funziona correttamente. Ma sulla mia macchina virtuale SL64 10 SP3 x64, dà il seguente errore:

error: No compatible architectures found for build

Inizialmente non stavo usando l' --targetopzione, era ancora in esecuzione sulla macchina x86, ma lo stesso errore era presente nella macchina x64.

Aiutatemi a risolvere questo errore

Risposte:


6

Dalla documentazione di Fedora per rpm, file spec e rpmbuild:

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

Quindi, come si dice, assicurati di avere i compilatori aggiuntivi installati (ad esempio gcc.i686 & gcc.x86_64).


Sì. Il termine, come menzionato anche nello snippet, è cross-compilatore . Questo è ciò che devi installare e dovrebbe essere abbastanza ben documentato su come farlo (la compilazione incrociata, sebbene non sia qualcosa che un utente normale incontrerà molto spesso, è abbastanza comune tra gli sviluppatori).
un CVn

3

Dato che stai usando il flag "-bb" significa che stai costruendo da binario, quindi non devi installare compilatori per altre architetture.

Basta sbarazzarsi della riga "Buildarch" nel file delle specifiche e passarlo dalla riga di comando

--target i386

o

--target x86_64

E dovrebbe creare l'rpms per te.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.