2009-04-20 14 views
5

Tôi đang cố gắng tĩnh biên dịch Mono cho MIPS. Tôi có thể biên dịch Mono, nhưng nó luôn được liên kết động với các phụ thuộc của nó, mặc dù tôi chỉ định tĩnh cho trình biên dịch.Bất kỳ ai vượt qua biên soạn Mono cho MIPS 64 bằng cách sử dụng uClibc?

Tôi đã viết một chương trình thử nghiệm và tôi có thể biên dịch tĩnh nó bằng toolchain của mình và chạy nó trên nền tảng đích. Tôi không chắc chắn nếu tôi thiếu một cái gì đó hoặc nếu nó không phải là có thể. Tôi đã xây dựng chuỗi công cụ của mình bằng cách sử dụng buildroot.

EDIT

Để làm cho mọi việc một chút rõ ràng hơn, tôi muốn tĩnh biên dịch mono với nó là phụ thuộc. Các phụ thuộc mà mono dựa vào là: GLib, pkg-config và gettext. Tôi tin rằng GLib là một phụ thuộc trực tiếp và GLib phụ thuộc vào pkg-config và gettext.

Tôi có thể đăng biến môi trường của mình và định cấu hình lệnh nếu cần.

Trả lời

1

Vâng, đã lâu rồi tôi chưa thử, nhưng tôi muốn báo cáo những gì tôi đã học được. Đối với một, tôi phát hiện ra rằng bộ xử lý MIPS là 64-bit và không 32-bit như tôi ban đầu đã nói cho các thiết bị nhúng mà tôi đã nhắm mục tiêu. Thứ hai, khi tôi đang làm việc này, Mono không có hỗ trợ MIPS 64-bit. Sau một ít nghiên cứu, tôi thấy rằng một nhóm tại N-iX đang chuyển Mono để hỗ trợ kiến ​​trúc 64 bit MIPS dựa trên cổng 32 bit đã được thực hiện. Cổng 64 bit đã được thực hiện cho một công ty có tên là SiCortex, Inc. và N-iX đang cố gắng lấy các bản vá lỗi của họ được áp dụng cho thân cây phát triển Mono chính. Bạn có thể kiểm tra số này forum thread để biết thêm thông tin. Tôi đã nói rằng tôi muốn giúp thử nghiệm, nhưng tôi chưa bao giờ nhận được phản hồi.

Theo như biên dịch tĩnh Mono, tôi đã học được rằng Mono sử dụng libtool để liên kết các thư viện của nó với nhau. Tôi sẽ cần phải tìm hiểu thêm về công cụ này, trước khi cố gắng biên dịch tĩnh. Tôi dừng lại sau khi biết rằng Mono không hỗ trợ MIPS 64-bit. Tôi cũng sẽ cần phải xem liệu các bản vá lỗi 64 bit đã từng được áp dụng cho Mono hay chưa.

Tôi hy vọng điều này sẽ hữu ích.

1

Để nhận được một Mono được liên kết hoàn toàn tĩnh, bạn sẽ phải xây dựng tất cả các phụ thuộc của nó (và phụ thuộc của chúng đệ quy) dưới dạng các thư viện tĩnh trước tiên. Chỉ sau đó bạn mới có thể xây dựng một Mono thực sự tĩnh.

+0

Tôi sợ điều này có thể là câu trả lời. Trong buildroot, tôi đã chọn các gói mà mono phụ thuộc vào để được xây dựng với toolchain, vì vậy chúng sẽ nằm trong thư mục lib và bin của chuỗi công cụ để liên kết. Tôi chỉ không muốn phải trải qua quá trình mà không ai khác nghĩ như vậy. Tôi sẽ thử và báo cáo lại các bước. –

0

Gần đây, trên một trong các podcast chồng luồng, Miguel cho biết họ đã chuyển Mono sang iPhone, sử dụng rất nhiều tĩnh tôi nghĩ. Trong khi không 64-bit, nó cho thấy những điều khó chịu có thể được thực hiện để Mono.

+0

Những gì họ đã làm là biên dịch tĩnh một ứng dụng .NET, mà đi kèm với rất nhiều tiền vẽ. Gần với những gì tôi đang tìm kiếm, nhưng không hoàn toàn. Tôi đang tìm cách để tĩnh biên dịch thời gian chạy Mono. Điều này sẽ phủ nhận sự cần thiết phải biên dịch tĩnh một ứng dụng .NET, vì thời gian chạy sẽ có sẵn. –