# #go #gcc #cgo #musl
Вопрос:
Я пытаюсь построить проект с помощью musl
В Докерфайле у меня есть
FROM golang:1.17 ......Some instructions RUN : amp;amp; wget -O /tmp/musl-1.1.19.tar.gz http://www.musl-libc.org/releases/musl-1.1.19.tar.gz amp;amp; tar -xvf /tmp/musl-1.1.19.tar.gz -C /tmp amp;amp; cd /tmp/musl-1.1.19 amp;amp; ./configure amp;amp; make amp;amp; make install amp;amp; cd - amp;amp; rm -rf /tmp/musl-1.1.19 /tmp/musl-1.1.19.tar.gz ; ......Some instructions RUN : amp;amp; CC=/usr/local/musl/bin/musl-gcc go build --ldflags '-s -w -linkmode external -extldflags "-static"' amp;amp; mv my-awesome-project /usr/local/bin/my-awesome-project
И я получил Ошибку : against hidden symbol `__TMC_END__' can not be used when making a PIE object collect2
Это также работает в голанге:изображение 1.9.
Также я попытался установить musl-инструменты с помощью apt-get install, тот же результат…
Я не понимаю, что я делаю не так и чего именно компилятор хочет от меня.
Комментарии:
1. Здесь потребуется некоторая информация о вашем источнике. Некоторые C-коды в вашем CGO ссылаются
__TMC_END__
, что недопустимо при компиляции PIE (исполняемого файла, не зависящего от позиции). musl компилирует PIE по умолчанию, чего не делает libc.2. нп, но какой из них? Проект-это точка входа для докера, которая позволяет передавать arg через двойной тире. Для запуска fpm в качестве примера также используются удаленные пакеты в качестве «github.com/robfig/cron» для крона и «github.com/miekg/dns» для разрешения через кэш dns