ฉันจะดูคำสั่งคอมไพล์ภายในที่ล้มเหลวในการติดตั้ง“ go get” ได้อย่างไร


126

magic.hฉันกำลังดึงและการติดตั้งแพคเกจที่มีการอ้างอิงและรวบรวมล้มเหลวในกรณีนี้ไม่ได้หาไฟล์ ฉันจะดูได้อย่างไรว่าคำสั่งคอมไพล์และแฟล็กคืออะไร? -vตัวเลือกไม่ได้ช่วย (ฉันไม่ต้องการความคิดเกี่ยวกับการได้รับเวทมนตร์ h จากที่นี่เป็นเพียงตัวอย่างเท่านั้น)

$ 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>

ตัวอย่างเช่นฉันจะค้นหาได้อย่างไรว่ากำลังค้นหาไฟล์รวมอยู่ที่ไหนแหล่งใดที่รวบรวมได้ (ในกรณีนี้ไฟล์ต้นฉบับที่ฉันเห็น$GO_PATH/srcมีที่#includeแสดงความคิดเห็นและมี/usr/local/include/match.hอยู่แล้ว)


มันไม่ได้แสดงความคิดเห็นมันเป็นความคิดเห็นที่วิเศษของ cgo จะค้นหาไฟล์ที่คอมไพเลอร์ C ใด ๆ จะค้นหา ตรวจสอบว่าคุณได้ติดตั้ง libmagic อย่างถูกต้อง ดูgolang.org/cmd/cgo
Ainar-G

ฉันได้ถอนการติดตั้งและติดตั้ง libmagic ใหม่แล้วโดยใช้ brew ซึ่งติดตั้งไปด้วย คำถามคือจะถอดฝาออกได้อย่างไรว่ากำลังทำอะไรอยู่ ซอร์สไฟล์ที่ใช้ไม่ตรงกับไฟล์ในทรี src - แล้วมันมาจากไหน? $ find ~ / go / src -name "* .go" -exec grep magic.h {} \; // #include <magic.h> // #include <magic.h>> - หมายเหตุแสดงความคิดเห็นในบรรทัด
timbl

คุณอ่านลิงค์ cgo หรือยัง? มันเป็นความคิดเห็นที่วิเศษ คอมไพเลอร์ Go แปลว่าเป็นการเรียกไปที่คอมไพเลอร์ C ซึ่งจะล้มเหลวเนื่องจากไม่พบเวทมนตร์ h. ลองสร้างไฟล์ C ด้วย#include <magic.h>และคอมไพล์ด้วยคอมไพเลอร์ C มันไม่ได้ล้มเหลวมันน่าสนใจ
Ainar-G

นอกจากนี้คุณอาจต้องโทรbrew link libmagic(ดูgist.github.com/eparreno/1845561 )
Ainar-G

คำตอบ:


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.