Làm cách nào tôi có thể tạo vòng / phút cho mục tiêu i386 trên máy x86-64?


8

Tôi đang xây dựng một vòng / phút bằng cách sử dụng rpmbuildlệnh như:

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

Khi tôi sử dụng máy SLED 10 SP3 x86, nó chạy thành công. Nhưng trên Máy ảo SLES 10 SP3 x64 của tôi, nó báo lỗi sau:

error: No compatible architectures found for build

Ban đầu tôi không sử dụng --targettùy chọn, nó vẫn chạy trên máy x86, nhưng lỗi tương tự là ở máy x64.

Xin hãy giúp tôi giải quyết lỗi này

Câu trả lời:


6

Từ tài liệu Fedora cho vòng / phút, tệp spec và 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

Vì vậy, như đã nói, hãy đảm bảo bạn đã cài đặt trình biên dịch bổ sung (ví dụ gcc.i686 & gcc.x86_64).


Đúng. Thuật ngữ cho nó, như cũng được đề cập trong đoạn trích, là trình biên dịch chéo . Đó là những gì bạn cần cài đặt, và nó nên được ghi lại khá rõ cách thực hiện (biên dịch chéo, trong khi không phải là thứ mà người dùng thông thường sẽ gặp phải rất thường xuyên, khá phổ biến đối với các nhà phát triển).
một CVn

3

Vì bạn đang sử dụng cờ "-bb" có nghĩa là bạn đang xây dựng từ hệ nhị phân nên bạn không cần phải cài đặt trình biên dịch cho các kiến ​​trúc khác.

Chỉ cần thoát khỏi dòng "Buildarch" trong tệp spec của bạn và chuyển nó từ dòng lệnh

--target i386

hoặc là

--target x86_64

Và nó sẽ tạo ra các rpms cho bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.