2012-12-13 35 views
6

Tôi đang cố gắng biên dịch Mono 3.0.2 từ một tarball của repo Mono của GitHub. Nhưng khi tôi nhận được trong thư mục mcs, các biên dịch thất bại:Lỗi khi cố gắng biên dịch Mono 3.0.2 trên CentOS 6.2

if test -w /root/mono/mcs; then :; else chmod -R +w /root/mono/mcs; fi 
    cd /root/mono/mcs && make --no-print-directory -s NO_DIR_CHECK=1 PROFILES=' net_2_0   net_3_5 net_4_0 net_4_5 ' CC='gcc' all-profiles 
    Bootstrap compiler: Mono C# compiler version 3.0.3.0 
    Makefile:43: warning: overriding commands for target 'csproj-local' 
../build/executable.make:149: warning: ignoring old commands for target 'csproj-local' 
    Makefile:43: warning: overriding commands for target 'csproj-local' 
../build/executable.make:149: warning: ignoring old commands for target 'csproj-local' 
    make[7]: *** No rule to make target '../../external/ikvm/reflect/*.cs', needed by '../class/lib/basic/basic.exe'. Stop. 
    make[6]: *** [do-all] Error 2 
    make[5]: *** [all-recursive] Error 1 
    make[4]: *** [profile-do--basic--all] Error 2 
    make[3]: *** [profiles-do--all] Error 2 
    make[2]: *** [all-local] Error 2 
    make[2]: Leaving directory '/root/mono/runtime' 
    make[1]: *** [all-recursive] Error 1 
    make[1]: Leaving directory '/root/mono' 
    make: *** [all] Error 2 

Tôi đã cố gắng cài đặt monolite bằng cách làm make get-monolite-latest và đã cố gắng để cài đặt các phiên bản 2.x và sau đó biên soạn. Không có giải pháp nào trong số này hoạt động. Quan tâm của tôi đối với phiên bản 3.0.2 là Công cụ Khuôn mẫu Dao cạo mới và khung MVC 4, nhưng nếu không có khả năng biên dịch/cài đặt hoặc gói nhị phân cho CentOS 6, tôi sẽ đánh giá cao kho lưu trữ với các phiên bản trước.

Trả lời

10

Các thư mục con external/ chứa phụ thuộc bên ngoài bằng cách sử dụng cái gọi là git submodules.

Nếu bạn nhận được bất kỳ lỗi nào liên quan đến tệp bị thiếu trong bất kỳ thư mục nào khi biên dịch từ tarball, thì tôi đoán là bất kỳ tập lệnh nào được dùng để tạo tarball này đều bị hỏng và không bao gồm bất kỳ phụ thuộc nào.

Nếu bạn có nguồn trực tiếp từ github, thì bạn cần chạy git submodule initgit submodule update.

Về lý thuyết, bạn có thể tải xuống từng mô-đun con này từ github bằng cách xem tệp .gitmodules.

Tuy nhiên, git ghi lại bản sửa đổi cụ thể của từng mô-đun con trong mỗi cam kết của mô-đun chính. Vì vậy, nếu bạn kiểm tra một số cam kết cụ thể trong đơn và sử dụng git submodule update, bạn sẽ nhận được bản sửa đổi chính xác giống nhau của từng mô-đun mà tác giả của cam kết đang sử dụng khi thực hiện cam kết đó.

Tôi khuyên bạn chỉ nên sử dụng git để lấy các nguồn nếu bạn muốn biên dịch từ nguồn. Nó sẽ tự động nhận được phiên bản chính xác của từng phụ thuộc cho bạn và cũng giúp bạn dễ dàng cập nhật phiên bản mới hơn và/hoặc thực hiện các thay đổi cục bộ.

+0

Nó hoạt động tốt. Cảm ơn nhiều! –

+0

Cảm ơn đã làm việc cho tôi cũng như phiên bản mới nhất (3.1.2) –

+0

Để tham khảo, tarball mono-4.3.2.467 trên tab phát hành của kho lưu trữ GitHub là một trong những bản phát hành bị hỏng. >. < –

Các vấn đề liên quan