Как импортировать пакеты нестандартной библиотеки, используя gccgo
Прежде всего, весь этот код может быть успешно собран с помощью инструмента go (например, go build, go install)
Например, я получил a.go, который пытается импортировать pkg нестандартной библиотеки из github:
package a
import (
"fmt"
"github.com/usr/pkg"
)
func init() {
fmt.Println("Import pkg", pkg.somevar)
}
когда я пытаюсь скомпилировать его с gccgo:
$ gccgo -c a.go
a.go:5:20: error: import file ‘github.com/usr/pkg’ not found
...
А потом я читаю Настройка и использование gccgo, он говорит
Когда вы импортируете пакет FILE с помощью gccgo, он будет искать данные импорта в следующих файлах и использовать первый найденный файл.
FILE.gox FILE.o libFILE.so libFILE.a
Компилятор gccgo будет искать в текущем каталоге файлы для импорта
Поэтому я захожу в $GOPATH/pkg/github.com/usr/pkg.a в текущий каталог и переименовываю его в libpkg.a.
Кажется, снова не удалось:
$ gccgo -c a.go
a.go:9:4: error: libpkg.a: malformed archive header name at 8
a.go:9:4: error: libpkg.a exists but does not contain any Go export data
И да, я использую gccgo 4.7.2
У меня нет опыта работы с gcc, поэтому я ищу здесь помощь.
1 ответ
Самый простой способ - использовать команду go из дистрибутива gc и запустить go build -compiler gccgo .
Ваша идея копирования pkg.a не работает, потому что pkg.a не была создана с помощью gccgo.