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

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

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

13 ответов

30 просмотров

Можно через докер, мы билдим так. Чуть позже могу скинуть пример (часа через 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, проще для той задачи которую я решаю. Но спасибо за наводку, возьму на вооружение, вдруг когда-то пригодится.)))

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта