2015-07-10 11 views
121

Tôi đang kéo và cài đặt một gói có phụ thuộc và việc biên dịch không thành công, trong trường hợp này không tìm thấy tệp, magic.h. Làm thế nào để tôi thấy các lệnh biên dịch và cờ là gì? Tùy chọn -v không có tác dụng. (Tôi không muốn những ý tưởng về nơi để có được magic.h từ, đây chỉ là một ví dụ.)Làm cách nào tôi có thể xem các lệnh biên dịch nội bộ không thành công trong quá trình cài đặt "go get"?

$ go get -u github.com/presbrey/magicmime 
# github.com/presbrey/magicmime 
../../../src/github.com/presbrey/magicmime/magicmime.go:20:11: fatal error: 'magic.h' file not found 
#include <magic.h> 

Làm thế nào tôi có thể tìm thấy, ví dụ, nơi nó được tìm kiếm bao gồm tác phẩm, những gì nguồn chính xác nó đã được biên dịch? (Trong trường hợp này các tập tin nguồn tôi thấy trong $GO_PATH/src có mà #include nhận xét ra, và một /usr/local/include/match.h tồn tại anyway.)

+0

Nó không nhận xét, đó là một CGO bình luận ma thuật. Nó tìm tập tin mà bất kỳ trình biên dịch C sẽ tìm kiếm nó. Đảm bảo bạn đã cài đặt đúng libmagic. Xem http://golang.org/cmd/cgo/. –

+0

Tôi đã gỡ cài đặt và cài đặt lại libmagic, bằng cách sử dụng brew, cũng được cài đặt. Câu hỏi đặt ra là làm thế nào để tháo nắp ra khỏi những gì đang làm. Tệp nguồn mà nó đang sử dụng không khớp với tệp trong cây src - vì vậy nó đã lấy nó từ đâu? $ find ~/go/src -name "* .go" -exec grep magic.h {} \; // #include // #include > -note nhận xét ra dòng – timbl

+0

Bạn đã đọc liên kết bản ngã chưa? Đó là một nhận xét kỳ diệu. Trình biên dịch Go dịch rằng một cuộc gọi đến trình biên dịch C, mà lần lượt thất bại vì nó không thể tìm thấy magic.h. Hãy thử tạo một tệp C với '#include ' trong đó và biên dịch bằng trình biên dịch C. Nó không thất bại, nó trở nên thú vị. –

Trả lời

98

Chạy đi xây dựng -x về vấn đề gói:

go build -x github.com/presbrey/magicmime 
+146

Bạn vừa giúp người phát minh ra WWW! – Hitz

+36

kỳ quan của SO ... – Joshua

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