170 похожих чатов

Парни, а кто-то сталкивался с билдингом под арм, при использовании

либ с сишными биндингами? Может есть какие-то готовые инструменты (например докер контейнеры) с компиляторами и репами либ под целевую платформу?

13 ответов

19 просмотров

Можно через докер, мы билдим так. Чуть позже могу скинуть пример (часа через 4)

Artem-Chulkov Автор вопроса

Билд образа происходит командой (Makefile syntax) docker build $(BUILD_DIR) -f $(DOCKERFILE) -t $(IMAGE_NAME) --build-arg ARCH=$(ARCH) В самом Dockerfile ARG ARCH=amd64 FROM ${ARCH}/golang:1.16.3-buster … т.е. по умолчанию amd64, но когда надо передаем ARCH=arm64v8. Внутри образа уже весь тулинг соответственно под архитектуру $(ARCH). Билд бинарей как обычно - в готовом образе $(DOCKER_CMD) go build \ -o $@ $(BUILD_FLAGS) \ -ldflags "-X cli.Version=$(VERSION) -w -s" \ ./cmd/$*/.

Artem-Chulkov Автор вопроса
Hiroki Fujisawa
Билд образа происходит командой (Makefile syntax) ...

Спасибо за ответ! По вашему способу сделать не получилось, но он подтолкнул в правильном направлении на https://github.com/docker/buildx, с помощью которого уже все получилось))) Кстати с использованием этой штуки, достаточно только добавить ключ --platform linux/arm/7 и собирается под целевую платформу стандартный dockerfile. Еще раз спасибо)

Artem Chulkov
Спасибо за ответ! По вашему способу сделать не пол...

Нет проблем. У нас просто на билдерах CI нет buildx, поэтому через манипуляции с образом

Artem-Chulkov Автор вопроса
Hiroki Fujisawa
Нет проблем. У нас просто на билдерах CI нет build...

у меня манипуляции с образами не взлетели, тк он ругался на то что архитектура хоста не совпадает с архитектурой контейнера. И если честно я не понимаю как оно у вас работает, ведь инструкции для arm отличаются от x86, явно нужен эмулятор на хостовой ОС

Artem Chulkov
у меня манипуляции с образами не взлетели, тк он р...

Есть же эмуляторы из qemu которые позволяют бинарники чужой архитектуры запускать

Artem-Chulkov Автор вопроса
медленно
слышал похожее про xgo (или gox)

Аха я на него тоже наткнулся при быстром гуглеже, но я так понял что оно было актуально пока go не поддерживал GOOS и GOARCH, у меня биндинги к сишным либам, надо их откуда-то взять и скомпилить, а это нужен сишный компилер под арм и все его зависимости...

Artem Chulkov
Спасибо за ответ! По вашему способу сделать не пол...

можно воспользоваться либо этим https://github.com/karalabe/xgo либо вот этим https://dev.to/kristoff/zig-makes-go-cross-compilation-just-work-29ho

Artem-Chulkov Автор вопроса
Oleksij Kyslytsja
Есть же эмуляторы из qemu которые позволяют бинар...

В данном случае это и используется только через докер и его апи)

Artem-Chulkov Автор вопроса
Владимир Столяров
можно воспользоваться либо этим https://github.com...

Глянул поперек, вроде то что нужно, но с ходу не понятно как подготовить тулчейн для билдинга, то есть надо откуда-то выкачать необходимые либы и их зависимости под целевую платформу и натравить сборщик на это все... Как по мне, вариант с докер контейнером, где все либы и их зависимости ставятся "нативно" через apt-get, проще для той задачи которую я решаю. Но спасибо за наводку, возьму на вооружение, вдруг когда-то пригодится.)))

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
15
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Карта сайта