2012-08-29 23 views
6

Đang cố gắng chuyển thư viện Delphi sang Android. Pascal miễn phí có hỗ trợ Android/ARM - một trình biên dịch dựng sẵn cho Windows có sẵn. Tuy nhiên, NDK của Android hiện hỗ trợ MIPS và x86. Tình trạng hỗ trợ cho những người trong FPC là gì? Hiện tại, dự án của tôi ít nhiều là CPU bất khả tri - các bit gốc được xây dựng cho tất cả bốn kiến ​​trúc được hỗ trợ. Không muốn buông bỏ điều đó.Pascal miễn phí dành cho Android trên MIPS

Tôi không theo chu kỳ phát triển Android đầy đủ trong Pascal - chỉ là thư viện thuật toán không có I/O. Tôi đã thử dịch nó thành C với p2c, nhưng người phiên dịch bị nghẹt thở trên các nguồn.

Tôi có nên thử và xây dựng trình biên dịch chéo cho CPU có liên quan với Linux, sau đó liên kết với các thư viện NDK không?

EDIT: Tôi đã xây dựng trình biên dịch chéo cho Intel/Linux từ các nguồn của nhánh Android. Nó hoạt động, ngoại trừ bạn phải gọi ppcross386 để biên dịch, chứ không phải fpc. Sau này, có vẻ như, bỏ qua tùy chọn -Tlinux và gọi trình biên dịch Intel/Win32.

EDIT2: với một thay đổi nhỏ đối với makefile và các nguồn, trình biên dịch chéo MIPS được xây dựng. Tuy nhiên, khi xây dựng chuyển sang RTL qua nhiều CPU, nó sẽ bị lỗi gần như ngay lập tức.

Trả lời

3

EDIT, cuối cùng: hỗ trợ cho mục tiêu biên dịch Android/MIPSEL có sẵn trong thân FPC. Xuất khẩu mới nhất, xây dựng crosscompiler, mã đi.


Mặc dù hỗ trợ cho MIPS ISA có thể được tìm thấy ở đây và trong nguồn FP, chưa chính thức được thực hiện. Đang đợi bản phát hành 2.7.

Trong khi chờ đợi, có support for compiling to Java bytecode trong thân cây, tài liệu được viết trong FP wiki. Có lẽ tôi có thể tận dụng điều đó như một stopgap ...

EDIT: Pascal miễn phí trên JVM hoạt động nói chung trên Android, nhưng its rules are somewhat different từ Pascal thông thường. Nếu không chính xác Pascal sẽ tìm ra khi được biên dịch sang JVM. Vì vậy, nó không thích hợp cho việc chuyển các cơ quan lớn của mã Pascal cũ mà không được viết với JVM trong tâm trí đầu tiên. EDIT: Tôi đã nhận dự án FPC của tôi làm việc trên MIPS/Android, nhưng công thức của tôi không phù hợp với mức tiêu thụ chung, vì phạm vi sử dụng Pascal RTL trong dự án của tôi là rất hạn chế. Nó liên quan đến việc biên dịch chéo từ Pascal thành MIPS (nhắm vào MIPSEL/Linux, có sẵn trong FPC trunk), sau đó cho các nguồn lắp ráp được tạo ra vào hệ thống xây dựng NDK, cung cấp cùng một sự tái triển khai C/assembly của một tập con giới hạn của Pascal RTL.

Toàn bộ cơ thể của Pascal RTL là lớn và đáng sợ. Giải pháp của tôi, trong đó bao gồm reimplementing Pascal RTL trong C từ đầu, là, tốt, ngược lại thường áp dụng.

+0

Ý tưởng JVM có thể sử dụng để được khắc phục một chút, vì Android không chạy JVM. Bạn có đang tạo mã để chuyển sang bộ chuyển đổi bytecode java-to-dalvik của Android không? Hay bạn đang thêm một JVM của bên thứ 3 vào Android (có thể nhưng không bình thường)? –

+0

Pascal miễn phí có khả năng biên dịch thành mã Java bytecode (như các tệp .class) có thể được cấp cho hệ thống xây dựng Android dưới dạng thư viện phụ thuộc. Chi tiết [ở đây] (http://wiki.freepascal.org/FPC_JVM). Chướng ngại vật của tôi [ở đây] (http://bugs.freepascal.org/view.php?id=22892). –