OnWorks Linux và Windows Online WorkStations

Logo

Lưu trữ trực tuyến miễn phí cho máy trạm

<Trước | Nội dung | Tiếp theo>

5.5.1. Cài đặt GCC chéo

hình ảnh

GCC hiện yêu cầu gói GMP, MPFR và MPC. Vì các gói này có thể không được bao gồm trong bản phân phối máy chủ lưu trữ của bạn, chúng sẽ được xây dựng bằng GCC. Giải nén từng gói vào thư mục nguồn GCC và đổi tên các thư mục kết quả để các thủ tục xây dựng GCC sẽ tự động sử dụng chúng:


Lưu ý

Có những hiểu lầm thường xuyên về chương này. Các thủ tục giống như mọi chương khác như đã giải thích trước đó (Hướng dẫn xây dựng gói). Đầu tiên giải nén tarball gcc từ thư mục nguồn và sau đó thay đổi thành thư mục đã tạo. Sau đó, bạn mới nên thực hiện theo các hướng dẫn bên dưới.

Lưu ý

Có những hiểu lầm thường xuyên về chương này. Các thủ tục giống như mọi chương khác như đã giải thích trước đó (Hướng dẫn xây dựng gói). Đầu tiên giải nén tarball gcc từ thư mục nguồn và sau đó thay đổi thành thư mục đã tạo. Sau đó, bạn mới nên thực hiện theo các hướng dẫn bên dưới.


tar -xf ../mpfr-4.0.2.tar.xz mv -v mpfr-4.0.2 mpfr

tar -xf ../gmp-6.1.2.tar.xz mv -v gmp-6.1.2 gmp

tar -xf ../mpc-1.1.0.tar.gz mv -v mpc-1.1.0 mpc

tar -xf ../mpfr-4.0.2.tar.xz mv -v mpfr-4.0.2 mpfr

tar -xf ../gmp-6.1.2.tar.xz mv -v gmp-6.1.2 gmp

tar -xf ../mpc-1.1.0.tar.gz mv -v mpc-1.1.0 mpc

hình ảnh

trong gcc / config / {linux, i386 / linux {, 64}}. h

trong gcc / config / {linux, i386 / linux {, 64}}. h

$ file {,. orig} của @ / lib \ (64 \) \? \ (32 \) \? / ld @ / tools & @ g '\

's @ / usr @ / tools @ g' $ file.orig> $ file

$ file {,. orig} của @ / lib \ (64 \) \? \ (32 \) \? / ld @ / tools & @ g '\

's @ / usr @ / tools @ g' $ file.orig> $ file

Lệnh sau sẽ thay đổi vị trí của trình liên kết động mặc định của GCC để sử dụng trình liên kết được cài đặt trong /công cụ. Nó cũng loại bỏ / usr / bao gồm từ GCC's bao gồm đường dẫn tìm kiếm. Phát hành:


cho tập tin làm

cp -uv sed -e

-e

cho tập tin làm

cp -uv sed -e

-e


echo '

#undef STANDARD_STARTFILE_PREFIX_1

#undef STANDARD_STARTFILE_PREFIX_2

#define STANDARD_STARTFILE_PREFIX_1 "/ tools / lib /"

#define STANDARD_STARTFILE_PREFIX_2 "" '>> $ file touch $ file.orig

thực hiện

echo '

#undef STANDARD_STARTFILE_PREFIX_1

#undef STANDARD_STARTFILE_PREFIX_2

#define STANDARD_STARTFILE_PREFIX_1 "/ tools / lib /"

#define STANDARD_STARTFILE_PREFIX_2 "" '>> $ file touch $ file.orig

thực hiện

Trong trường hợp những điều trên có vẻ khó làm theo, hãy chia nhỏ nó ra một chút. Đầu tiên, chúng tôi sao chép các tệp gcc / config / linux.h, gcc / config / i386 / linux.hgcc / config / i368 / linux64.h vào một tệp cùng tên nhưng có thêm hậu tố là “.orig”. Sau đó, biểu thức sed đầu tiên thêm “/ tools” vào mọi phiên bản của “/ lib / ld”, “/ lib64 / ld” hoặc “/ lib32 / ld”, trong khi biểu thức thứ hai thay thế các phiên bản mã hóa cứng của “/ usr”. Tiếp theo, chúng tôi thêm các câu lệnh xác định của chúng tôi để thay đổi tiền tố startfile mặc định vào cuối tệp. Lưu ý rằng dấu “/” trong “/ tools / lib /” là bắt buộc. Cuối cùng, chúng tôi sử dụng chạm để cập nhật dấu thời gian trên các tệp đã sao chép. Khi được sử dụng kết hợp với CPU, điều này ngăn các thay đổi không mong muốn đối với tệp gốc trong trường hợp các lệnh vô tình chạy hai lần.


Cuối cùng, trên máy chủ x86_64, hãy đặt tên thư mục mặc định cho các thư viện 64-bit thành “lib”:


case $ (uname -m) trong x86_64)

sed -e '/ m64 = ​​/ s / lib64 / lib /' \

-i.orig gcc / config / i386 / t-linux64

;;

nó C

case $ (uname -m) trong x86_64)

sed -e '/ m64 = ​​/ s / lib64 / lib /' \

-i.orig gcc / config / i386 / t-linux64

;;

nó C

Tài liệu GCC khuyến nghị xây dựng GCC trong một thư mục xây dựng chuyên dụng:


mkdir -v xây dựng cd xây dựng

mkdir -v xây dựng cd xây dựng

Chuẩn bị GCC để biên dịch:


../cấu hình \

--target = $ LFS_TGT \

--prefix = / tools \

--with-glibc-version = 2.11 \

--with-sysroot = $ LFS \

--with-newlib \

--không có tiêu đề \

--with-local-prefix = / tools \

--with-native-system-header-dir = / tools / include \

--disable-nls \

--disable-share \

--disable-multilib \

--disable-thập phân-float \

--disable-thread \

--disable-libatomic \

--disable-libgomp \

--disable-libquadmath \

--disable-libssp \

--disable-libvtv \

--disable-libstdcxx \

--enable-Languages ​​= c, c ++

../cấu hình \

--target = $ LFS_TGT \

--prefix = / tools \

--with-glibc-version = 2.11 \

--with-sysroot = $ LFS \

--with-newlib \

--không có tiêu đề \

--with-local-prefix = / tools \

--with-native-system-header-dir = / tools / include \

--disable-nls \

--disable-share \

--disable-multilib \

--disable-thập phân-float \

--disable-thread \

--disable-libatomic \

--disable-libgomp \

--disable-libquadmath \

--disable-libssp \

--disable-libvtv \

--disable-libstdcxx \

--enable-Languages ​​= c, c ++

Ý nghĩa của các tùy chọn cấu hình:


--with-newlib

Vì thư viện C hoạt động chưa có sẵn, điều này đảm bảo rằng hằng số ức chế_libc được xác định khi xây dựng libgcc. Điều này ngăn cản việc biên dịch bất kỳ mã nào yêu cầu hỗ trợ libc.

- không có tiêu đề

Khi tạo một trình biên dịch chéo hoàn chỉnh, GCC yêu cầu các tiêu đề tiêu chuẩn tương thích với hệ thống đích. Đối với mục đích của chúng tôi, những tiêu đề này sẽ không cần thiết. Công tắc này ngăn GCC tìm kiếm chúng.

--with-local-prefix = / tools

Tiền tố cục bộ là vị trí trong hệ thống mà GCC sẽ tìm kiếm các tệp bao gồm được cài đặt cục bộ. Mặc định là / usr / local. Đặt cái này thành /công cụ giúp giữ vị trí máy chủ của / usr / local ra khỏi đường dẫn tìm kiếm của GCC này.


--with-native-system-header-dir = / tools / include

Theo các tìm kiếm GCC mặc định / usr / bao gồm cho tiêu đề hệ thống. Cùng với công tắc sysroot, điều này thường sẽ dịch sang $ LFS / usr / bao gồm. Tuy nhiên, các tiêu đề sẽ được cài đặt trong hai phần tiếp theo sẽ chuyển đến $ LFS / công cụ / bao gồm. Công tắc này đảm bảo rằng gcc sẽ tìm thấy chúng một cách chính xác. Trong lần vượt qua thứ hai của GCC, công tắc tương tự này sẽ đảm bảo rằng không có tiêu đề nào từ hệ thống máy chủ được tìm thấy.

- Disable-shared

Công tắc này buộc GCC phải liên kết tĩnh các thư viện nội bộ của nó. Chúng tôi làm điều này để tránh các sự cố có thể xảy ra với hệ thống máy chủ.

--disable-decimal-float, --disable-thread, --disable-libatomic, --disable- libgomp, --disable-libquadmath, --disable-libssp, --disable-libvtv, --disable- libstdcxx

Các công tắc này vô hiệu hóa hỗ trợ cho phần mở rộng dấu phẩy động thập phân, luồng, libatomic, libgomp,

libquadmath, libssp, libvtv và thư viện chuẩn C ++ tương ứng. Các tính năng này sẽ không biên dịch được khi xây dựng trình biên dịch chéo và không cần thiết cho nhiệm vụ biên dịch chéo libc tạm thời.

--disable-multilib

Trên x86_64, LFS chưa hỗ trợ cấu hình multilib. Công tắc này vô hại đối với x86.

--enable-Languages ​​= c, c ++

Tùy chọn này đảm bảo rằng chỉ các trình biên dịch C và C ++ được xây dựng. Đây là những ngôn ngữ duy nhất cần thiết bây giờ.

Biên dịch GCC bằng cách chạy:


làm cho

làm cho

Quá trình biên dịch đã hoàn tất. Tại thời điểm này, bộ thử nghiệm bình thường sẽ được chạy, nhưng, như đã đề cập trước đây, khung bộ thử nghiệm vẫn chưa được áp dụng. Lợi ích của việc chạy các bài kiểm tra tại thời điểm này là rất ít vì các chương trình từ lần vượt qua đầu tiên này sẽ sớm được thay thế.

Cài đặt gói:


thực hiện cài đặt

thực hiện cài đặt

Điện toán đám mây hệ điều hành hàng đầu tại OnWorks: