2010-04-01 18 views
9

Đang cố gắng để cài đặt Git, tôi chạy cấu hình và thực hiện, nhưng nhận được thông báo lỗi sau:lỗi Makefile: cuối bất ngờ của dòng thấy

make: Fatal error in reader: Makefile, line 221: Unexpected end of line seen

Các Makefile trông giống như:

218: GIT-VERSION-FILE: FORCE 
219:   @$(SHELL_PATH) ./GIT-VERSION-GEN 
220: -include GIT-VERSION-FILE 
221: 
222: uname_S := $(shell sh -c 'uname -s 2>/dev/null øø echo not') 

gì gây ra lỗi?

Những thông tin sau có thể có hoặc không có liên quan:

  • Tôi cố gắng để cài đặt Git 1.7.0.3 trên SunOS 5.9 (Solaris 9) trong một thư mục trong tài khoản của tôi.
  • Phiên bản gcc là 3.4.2 (cũ hơn sau đó là phiên bản 3.4.6 được nêu rõ bởi sunfreeware.com).
  • Tôi không có đặc quyền root.
+4

Phiên bản thực hiện sẽ phù hợp hơn phiên bản gcc. Có lẽ nó quá cũ để hỗ trợ chỉ thị '-bao gồm'? – Cascabel

+3

@Jefromi: hoặc không phải là GNU Tạo ...Mặt trời Có thể không hiểu '-bao gồm' - và sẽ trông đợi dấu hai chấm hoặc dấu bằng trên dòng 220 (vì nó không thể là lệnh vì ký tự đầu tiên không phải là tab), và tất cả các dòng khác các chú thích, các quy tắc (với dấu hai chấm) hoặc các macro (với một bằng) và dòng 220 không khớp với bất kỳ cái nào trong số đó. –

+1

Nếu Makefile của bạn thực sự nói 'øø' thì nó bằng cách nào đó đã bị hỏng. Nó phải là '||'. Thử tải xuống lại. – mark4o

Trả lời

0

Đảm bảo rằng bạn đã thực sự gắn thẻ cho đường kẻ và không phải là tất cả các không gian. Tôi đã có vấn đề này nhưng tôi phát hiện ra lệnh đã không đúng cách trong tab và đó là lý do tại sao tôi đã chạy vào lỗi này.

+0

@Diavolche: Chỉ bắt đầu Dòng 219 trong đoạn trích đoạn mã có một tab. –

+0

Trong trường hợp của tôi dòng không được thụt lề đúng cách (nên bắt đầu bằng một tab). Tại sao đây là -1'ed là ngoài tôi. – vesperto

1

của nó là một vấn đề với bạn "làm", cài đặt "make-3.81.tar" và sau đó thử

3

Sử dụng gmake thay vì make.

Solaris toàn cầu có hai lệnh, gmakemake. Trong gmake là lệnh tạo kiểu GNU, và make là lệnh tạo kiểu năng lượng mặt trời. Tôi hy vọng bạn đã viết makefile của bạn theo kiểu GNU. Vì vậy, sử dụng lệnh gmake.

11

Sử dụng gmake trên SunOS thay vì make đã khắc phục sự cố này cho tôi.

+0

cũng thay đổi dòng "= cc" thành "= gcc" – jim

2

Điều này có thể do kết thúc dòng DOS (CRLF) trong tệp makefile của bạn. Tôi đã có một vấn đề tương tự và giải quyết nó bằng cách chạy dos2unix trên makefile. Linux có vẻ không bị làm cho bởi cùng một makefile.

0

Tôi đã gặp lỗi này với 2 makefiles đơn giản, một trong số đó đã hoạt động và một lỗi tạo ra lỗi.

Cả hai đều có các dòng được gắn thẻ đúng cách và cả hai đều có dòng cuối "CRLF". Vì lý do này hay cách khác, Tôi đã cố gắng khắc phục sự cố bằng cách thay đổi dòng kết thúc thành "LF", nhưng tôi nhầm lẫn là tại sao các makefile khác được phân tích cú pháp thành công mặc dù nó có "CRLF". Có nghĩa là, tuy nhiên, một đầu mối: một hoặc hai đầu tiên lần, "làm" cho một lỗi:

mksh: Warning: newline is not last character... 

Sau khi mở makefile trong soạn thảo văn bản, và thêm một dòng kết thúc ở cuối, nó bắt đầu sản xuất lỗi của OP.

Trong trường hợp này, bạn nên có trình chỉnh sửa có thể hiển thị các kết thúc dòng và tab.