Как изменить путь к библиотеке для сборки

Пытаюсь работать с гонкурсами. В Centos 6 библиотека ncurses старая (5.7, хочет 5.9), поэтому я собрал ncurses из исходников и установил в /usr/lib, /usr/include и т. д.

Как я могу сказать "go get" работать с материалом в /usr/lib вместо системного материала в /lib?

Это мой текущий вывод:

$ go get -v code.google.com/p/goncurses
code.google.com/p/goncurses
# code.google.com/p/goncurses
/tmp/go-build076024492/code.google.com/p/goncurses/_obj/goncurses.o: In function `ncurses_is_subwin':
src/code.google.com/p/goncurses/goncurses.c:71: undefined reference to `is_subwin'
/tmp/go-build076024492/code.google.com/p/goncurses/_obj/goncurses.o: In function `ncurses_is_pad':
src/code.google.com/p/goncurses/goncurses.c:63: undefined reference to `is_pad'
collect2: ld returned 1 exit status

Я пробовал разные варианты LD_LIBRARY_PATH=/usr/lib и -ccflags = '-I /usr/lib' без каких-либо изменений в поведении.

Я знаю, что это простой вопрос, но мой гугл-фу меня прямо сейчас подводит.


person Kevin G.    schedule 27.05.2014    source источник
comment
это похоже на проблему со связью, попробуйте с -ldflag "-L/usr/lib -lncursesw", возможно.   -  person OneOfOne    schedule 27.05.2014
comment
нет, go get -v -ldflags "-L/usr/lib" code.google.com/p/goncurses имеет тот же результат   -  person Kevin G.    schedule 27.05.2014
comment
У вас либо испорченная установка ncurses, либо вы используете устаревшую версию, вам следует использовать их средство отслеживания ошибок, если таковое имеется.   -  person OneOfOne    schedule 27.05.2014


Ответы (1)


Пакет goncurses полагается на pkg-config, чтобы получить правильные пути для сборки.

Если вы можете заставить pkg-config выводить правильные пути для ncurses в вашей системе - go сделает все правильно. Другой вариант — это, конечно, разветвить код goncurses и отредактировать директивы #cgo в исходном коде.

person JimB    schedule 27.05.2014
comment
Ну ладно, по крайней мере, это дало мне направление, даже если заставило меня самому найти ответ. Это устанавливает локальный каталог для pkg-config и указывает configure помещать туда файлы .pc после установки библиотек ncurses в /usr/local/ mkdir ~/local-pkg-config-libdir && PKG_CONFIG_LIBDIR=~/local-pkg-config-libdir ./configure --prefix=/usr/local/ --enable-pc-files --with-pkg-config Это указывает pkg-config использовать этот альтернативный каталог конфигурации при сборке исполняемого файла go. PKG_CONFIG_PATH=~/local-pkg-config-libdir/ go get -v code.google.com/p/goncurses - person Kevin G.; 01.06.2014
comment
Ницца. Я смог сделать то же самое в OS X. Я поместил детали в отдельный вопрос с самостоятельным ответом: stackoverflow.com/questions/23975235/ - person Kevin G.; 01.06.2014