Làm cách nào tôi có thể thấy các lệnh biên dịch nội bộ không thành công trong cài đặt trên máy của Google.


126

Tôi đang kéo và cài đặt một gói với cá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ì? Các -vtùy chọn không giúp đỡ. (Tôi KHÔNG muốn ý tưởng về nơi lấy ma thuật. Từ đây, đây chỉ là một ví dụ.)

$ 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ó đang tìm kiếm các tệp bao gồm, nguồn chính xác mà nó đang biên dịch là gì? (Trong trường hợp này, tệp nguồn mà tôi thấy trong $GO_PATH/srcđó #includeđã nhận xét và /usr/local/include/match.hdù sao cũng tồn tại.)


Nó không được bình luận, đó là một bình luận ma thuật của cgo. Nó tìm kiếm tập tin mà bất kỳ trình biên dịch C nào sẽ tìm kiếm nó. Hãy chắc chắn rằng bạn đã cài đặt libmagic chính xác. Xem golang.org/cmd/cgo .
Ainar-G

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

Bạn đã đọc các liên kết cgo? Đó là một bình luận kỳ diệu. Trình biên dịch Go dịch nó thành một cuộc gọi đến trình biên dịch C, 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 có #include <magic.h>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ị.
Ainar-G

Ngoài ra, bạn có thể cần phải gọi brew link libmagic(xem gist.github.com/eparreno/1845561 ).
Ainar-G

Câu trả lời:


101

Chạy go build -x trên gói vấn đề:

go build -x github.com/presbrey/magicmime
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.