Como posso construir um rpm para o destino i386 em uma máquina x86-64?

7

Estou construindo um rpm usando o comando rpmbuild como:

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

Quando uso minha máquina SLED 10 SP3 x86, ela é executada com êxito. Mas na minha máquina virtual SLES 10 SP3 x64, dá o seguinte erro:

error: No compatible architectures found for build

Inicialmente eu não estava usando a opção --target , ainda estava rodando na máquina x86, mas o mesmo erro estava na máquina x64.

Por favor, ajude-me a resolver este erro

    
por Don't You Worry Child 04.09.2013 / 08:37

2 respostas

4

Da documentação do Fedora para rpm, arquivos 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.

link

Então, como está escrito, certifique-se de ter os compiladores adicionais instalados (por exemplo, gcc.i686 & gcc.x86_64).

    
por 16.09.2013 / 07:13
2

Como você está usando o sinalizador "- bb" , o que significa que você está construindo a partir de binary para não precisar instalar compiladores para outras arquiteturas.

Apenas se livre da linha "Buildarch" em seu arquivo de especificação e passe-a da linha de comando

--target i386

ou

--target x86_64

E deve criar o rpms para você.

    
por 28.08.2016 / 12:16