2013-09-22 2 views
1

Я пытаюсь построить программу Go, где у меня есть требуемая библиотека в моей системе в двоичной форме. Однако go build терпит неудачу сКак получить информацию о сборке объекта из библиотеки Go?

object is [linux amd64 go1.1.1 X:none] expected [linux amd64 go1.1.2 X:none] 

Я понимаю, что непосредственная проблема заключается в следующем: статическая библиотека была построена с более старой версией Go. Как я могу напрямую прочитать эту информацию из файла .a? (Я могу видеть его с strings library.a | grep '^go object', но есть то, что это означало для вывода строки сборки? (И, что эта строка правильно называется?)

ответ

1

.a файлы компилятор Go производит управляется с помощью инструмента pack . метаданные используются для связывания пакета находится в __.PKGDEF член архива

Вы можете извлечь этот файл из архива stdout с:.

go tool pack p path/to/package.a __.PKGDEF 

Он начинается с построения Signa вы можете взять первую строку или grep для ^go object так же, как вы были с выходом strings (это должно быть немного более надежным, если текст отображается как константа в программном коде).

Смежные вопросы