Как импортировать пакеты нестандартной библиотеки, используя 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.

Другие вопросы по тегам