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 -v
tù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.h
dù 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ó
—
Ainar-G
#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ị.
Ngoài ra, bạn có thể cần phải gọi
—
Ainar-G
brew link libmagic
(xem gist.github.com/eparreno/1845561 ).