Wie kann ich eine Drehzahl für ein i386-Ziel auf einem x86-64-Computer erstellen?

8

Ich baue eine Drehzahl mit dem folgenden rpmbuildBefehl:

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

Wenn ich meinen SLED 10 SP3 x86-Computer verwende, wird er erfolgreich ausgeführt. Auf meiner virtuellen SLES 10 SP3 x64-Maschine wird jedoch der folgende Fehler angezeigt:

error: No compatible architectures found for build

Anfangs habe ich keine --targetOption verwendet, sie wurde jedoch immer noch auf einem x86-Computer ausgeführt, aber der gleiche Fehler war auf einem x64-Computer vorhanden.

Bitte helfen Sie mir, diesen Fehler zu beheben

Mach dir keine Sorgen Kind
quelle

Antworten:

6

Aus der Fedora-Dokumentation für RPM, Spezifikationsdateien und 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

Stellen Sie also sicher, dass die zusätzlichen Compiler installiert sind (z. B. gcc.i686 & gcc.x86_64).

Brian Redbeard
quelle
Ja. Der Begriff dafür ist, wie auch im Snippet erwähnt, Cross-Compiler . Das ist es, was Sie installieren müssen, und es sollte ziemlich gut dokumentiert sein, wie es geht (Cross-Kompilierung ist zwar nicht etwas, auf das ein normaler Benutzer sehr oft stößt, ist jedoch bei Entwicklern weit verbreitet).
Ein Lebenslauf vom
3

Da Sie das Flag "-bb" verwenden, bedeutet dies, dass Sie aus Binärdateien erstellen, sodass Sie keine Compiler für andere Architekturen installieren müssen.

Entfernen Sie einfach die Zeile "Buildarch" in Ihrer Spezifikationsdatei und übergeben Sie sie über die Befehlszeile

--target i386

oder

--target x86_64

Und es sollte die RPMs für Sie erstellen.

Adnan Kamili
quelle