2017-02-14 6 views
8

В настоящее время я пытаюсь настроить проект Go, и учитывая, что я запускаю Windows, в то время как другие 2 разработчика работают на Mac, у меня есть некоторые проблемы с установка нескольких пакетов.Как установить пакет go с MinGW, который зависит от libiconv

После попытки установить пакеты с помощью cmd, я смог установить только 2 из 4. Остальные два gcc.

Поэтому я установил MinGW. Я смог установить третий пакет таким образом, но теперь я застрял на https://github.com/mikkyang/id3-go.

Кажется, что это зависит от другого базового проекта, https://github.com/djimenez/iconv-go. В тот момент я пытаюсь go install id3-гоу, я всегда уходил с этой ошибкой:

src\github.com\djimenez\iconv-go\converter.go:8:19: fatal error: iconv.h: No such file or directory 

Каким-то образом, мне нужно использовать libiconv с MinGW, но я понятия не имею, как подключиться обе части. Я не являюсь экспертом в этой области, поэтому любая помощь будет оценена очень много. Я уже загрузил libiconv для Windows.

Связанный вопрос для получения дополнительной информации, которую я нашел на проекте GitHub: https://github.com/mikkyang/id3-go/issues/21

EDIT: Я сделал некоторый прогресс по всей проблеме. Теперь я получил все файлы, которые мне нужны, но теперь я застрял с этим предупреждением:

# github.com/djimenez/iconv-go 
E:/Tools/TDM-GCC/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -liconv 
collect2.exe: error: ld returned 1 exit status 

Я попытался добавить libiconv2.a из моей установки libiconv в mingw32 Lib папку, но это то, что я в конечном до

# github.com/djimenez/iconv-go 
E:/Tools/TDM-GCC/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible E:/Tools/TDM-GCC/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/lib/../lib/libiconv.a when searching for -liconv 
E:/Tools/TDM-GCC/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible E:/Tools/TDM-GCC/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/lib/../lib\libiconv.a when searching for -liconv 
E:/Tools/TDM-GCC/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible E:/Tools/TDM-GCC/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/lib/libiconv.a when searching for -liconv 
E:/Tools/TDM-GCC/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible E:/Tools/TDM-GCC/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/lib\libiconv.a when searching for -liconv 
E:/Tools/TDM-GCC/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible E:/Tools/TDM-GCC/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/lib/../lib/libiconv.a when searching for -liconv 
E:/Tools/TDM-GCC/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible E:/Tools/TDM-GCC/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/lib/libiconv.a when searching for -liconv 
E:/Tools/TDM-GCC/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -liconv 
collect2.exe: error: ld returned 1 exit status 

Я понятия не имею, как это исходит.

+0

Какие пакеты необходимы для 'gcc'? – eduncan911

+0

Это id3-go: https://github.com/mikkyang/id3-go – Sossenbinder

+0

Я не вижу никакой компиляции в этом пакете. – eduncan911

ответ

2

Я столкнулся с той же проблемой, когда хочу go install github.com/google/gopacket, которому необходимо CGO. Это потому, что ваш libiconv2.a генерируется другим компилятором, поэтому он несовместим с компилятором mingw32, как говорится в сообщении об ошибке. Нам необходимо произвести статическую LIB с mingw32 набор инструментов:

  1. находят libiconv-2.DLL (coresonding динамическая библиотека) в вашем ПК
  2. запустить gendef (находится в C: \ TDM-GCC-64 \ x86_64 -w64-mingw32 \ бин в моем 64-битной Windows) на этих файлах gendef libiconv-2.dll, это создаст libiconv2.def файл
  3. Затем генерировать статическую библиотеку:

    dlltool --as-flags=--64 -m i386:x86-64 -k --output-lib libiconv2.a --input-def libiconv2.def

  4. Скопировать libiconv2.a в нужное место.