story changes, ui fixes
This commit is contained in:
49
story/linux_go_blt_install_quickstart.md
Normal file
49
story/linux_go_blt_install_quickstart.md
Normal file
@ -0,0 +1,49 @@
|
||||
Установка и работа с BLT на Linux
|
||||
==
|
||||
|
||||
Про Windows и Mac в контексте связки Go + BLT, я говорить не буду, поскольку не ел устриц.
|
||||
С Linux, которая моя основная рабочая ось - другая история, здесь вносят свой шарм особенности работы линкера.
|
||||
Дело в том, что BLT написана на C. Но! есть готовые биндинги для Go, НО! В Terminal/Include/Go по умолчанию
|
||||
указаны такие флаги линкера CGO (стр 25)
|
||||
```go
|
||||
// #cgo LDFLAGS: -lBearLibTerminal
|
||||
```
|
||||
Что подразумевает глобальную вивдимость библиотеки. Увы, пока пакета с BLT для распространенных дистрибутивов Linux нет.
|
||||
Поэтому беде нужно помочь руками. Сначала вручную показать линтеру, что такая библиотека есть, и потом перезагрузить
|
||||
кеш путей к библиотекам::
|
||||
```bash
|
||||
$ sudo echo "/path/to/libbearterminal.so" > /etc/ld.so.conf.d/libbearterminal.conf && sudo ldconfig
|
||||
```
|
||||
|
||||
Проблема тут в том, что эту же операцию придется проделать всем, кто захочет запустить ваше приложение с BLT. Вопреки
|
||||
распространенному стереотипу - доля красноглазых пользователей Linux с каждым годом падает, и эта консольная магия для
|
||||
большинства уже некомильфо.
|
||||
|
||||
Способ второй, которым воспользовался я, намного проще для пользователя.
|
||||
Редактируем файл с биндингами примерно следующим образом:
|
||||
```go
|
||||
// #cgo LDFLAGS: -L. -Wl,-rpath -Wl,./ -lBearLibTerminal
|
||||
// #include <stdlib.h>
|
||||
// #include <BearLibTerminal.h>
|
||||
import "C"
|
||||
```
|
||||
(знатоки С, простите, я этими флагами вообще
|
||||
пользоваться не умею)
|
||||
|
||||
Далее - собираем приложение с libtcod ```go build -o test```.
|
||||
|
||||
Проверяем, что относительные пути записались в бинарник:
|
||||
```bash
|
||||
objdump -p test | grep RPATH
|
||||
```
|
||||
Результат должен быть таким:
|
||||
```bash
|
||||
RPATH ./
|
||||
```
|
||||
|
||||
Ура! Теперь кладем libBearLibTerminal.so прямо в папку с main.go и запускам go run (или скомпилированный бинарник) прям
|
||||
оттуда. Собранные таким образом бинарники будут искать библиотеку в той же папке, где находятся они сами.
|
||||
|
||||
Теперь при дистрибуции приложения можно просто положить .so файл библиотеки рядом, и все будет работать!
|
||||
|
||||
Вторая кочка, на котрой
|
Reference in New Issue
Block a user