Tôi đã có một Raspberry PI với Emdebian được cài đặt trên đó và muốn các dự án biên dịch chéo.Kết hợp rootfs hiện có với toolchain tùy chỉnh
Có rất nhiều tài liệu về cách lấy chuỗi công cụ và xây dựng một dự án đơn giản với nó. Bản thân tôi quản lý để xây dựng một toolchain với crosstool-ng và đã viết một chương trình hello world hoạt động tốt.
Điều tôi không hiểu là cách xử lý việc biên dịch chéo các dự án phức tạp hơn như Qt, có phụ thuộc vào các thư viện khác. Hãy sử dụng libdbus làm ví dụ, vì đó là một trong những phụ thuộc của Qt.
Emdebian đã cài đặt đã chứa libdbus.so, vì vậy tự nhiên tôi muốn sử dụng nó, thay vì biên dịch chéo libdbus.so của riêng tôi, khi biên dịch tất cả các phụ thuộc của Qt sẽ mất rất nhiều thời gian.
Đối với cross-biên dịch, có hai thư mục quan trọng, như xa như tôi hiểu:
- Các "dàn" thư mục, nơi mà tất cả các thư viện và các ứng dụng được cài đặt sống. Điều này ban đầu là một bản sao của thư mục sysroot của toolchain, và được phổ biến với nhiều thư viện hơn khi chúng được biên dịch chéo.
- Thư mục "rootfs", tương đương với nội dung trên thiết bị - về cơ bản là bản sao của thư mục dàn trang mà không cần những thứ không cần thiết như tệp tài liệu và tiêu đề. Theo như tôi hiểu, cách tiếp cận tốt nhất là sao chép các tập tin cần thiết từ thư mục dàn dựng vào rootfs.
Lấy thư mục rootfs dễ dàng, vì đó có thể là một NFS gắn kết từ thiết bị. Nhưng làm thế nào để có được một thư mục dàn dựng cho cài đặt Emdebian hiện có trên PI? Thư mục dàn dựng cần bao gồm những thứ như tiêu đề dbus, không được cài đặt trên rootfs.
Một số người chỉ cần cài đặt tiêu đề dbus trên thiết bị, với cài đặt apt-get libdbus-dev và sau đó sử dụng rootfs làm thư mục dàn dựng. Với thiết lập này, không có sự phân biệt giữa rootfs và dàn dựng nữa, với bất lợi là rootfs bị ô nhiễm với tiêu đề, tài liệu và vân vân. Ưu điểm của khóa học là nó rất dễ dàng.
Cách tốt nhất để có được các tiêu đề dbus vào thư mục dàn dựng của tôi trên máy chủ của tôi là gì? Cách tiếp cận thông thường mà mọi người sử dụng trong tình huống này là gì?
Là một câu hỏi phụ, tại sao cách tiếp cận có được một chuỗi công cụ, biên dịch một chương trình và sau đó sao chép nó vào một công việc mục tiêu? Toolchain có các phiên bản libc, libstdC++ vv của riêng chúng, chúng không tương thích với các phiên bản được cài đặt trên đích không? Đặc biệt là khi tạo ra bằng cách sử dụng một toolchain tùy chỉnh được biên dịch với crosstool-ng?
(Lưu ý rằng tôi không hỏi làm thế nào để biên dịch Qt, tôi có thể hình dung ra rằng bản thân mình. Câu hỏi của tôi là tổng quát hơn, khoảng cách tiếp cận để thực hiện khi kết hợp một toolchain tùy chỉnh với một cài đặt hiện có/rootfs)
Tuyệt vời, debootstrap chính xác là những gì tôi đang tìm kiếm. Mất một chút để làm việc trên OpenSuSE, nhưng cuối cùng, nó là hoàn hảo :) –