Я не могу собрать статический двоичный файл из кристаллической программы под альпийским краем - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь скомпилировать простейшую кристаллическую программу, но с флагом --static:

Код:

# x.cr
puts "test"

Компиляция:

crystal build --static x.cr

результат:

/usr/lib/gcc/x86_64-alpine-linux-musl/8.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lgc (this usually means you need to install the development package for libgc)
collect2: error: ld returned 1 exit status
Error: execution of command failed with code: 1: `cc "${@}" -o '/app/x'  -rdynamic -static  /usr/lib/libpcre.a -lgc /usr/lib/libpthread.a /usr/lib/crystal/core/ext/libcrystal.a /usr/lib/libevent.a /usr/lib/librt.a -L/usr/lib -L/usr/local/lib`

Полагаю, мне не хватает пакета apk.Я пытался gc, gc-dev, musl-dev - не повезло - это связано с пакетом или я что-то упустил?

Ответы [ 3 ]

1 голос
/ 08 апреля 2019

Кажется, ответ таков: gc-dev больше не предоставляет статическую библиотеку для edge. Раньше так и было в выпусках до 3.9.

Существует PR, чтобы исправить это: https://github.com/alpinelinux/aports/pull/6970

0 голосов
/ 29 марта 2019

Отсутствует libgc , но это требуется пакетом Crystal в репозитории (если вы установили Crystal оттуда). Возможно, вам потребуется версия dev , как указано в документах .

0 голосов
/ 29 марта 2019
apk add crystal shards

# equivalent to build-essentials 
apk add --virtual build-dependencies build-base gcc

# or a more complete build dependencies pkg:
# apk add --update alpine-sdk

crystal build --static x.cr

Я проверил это на новом новом альпийском контейнере.

...