Cross Compiling A Go Native Binary для кода Java с помощью DockerLinux

Ответить Пред. темаСлед. тема
Anonymous
 Cross Compiling A Go Native Binary для кода Java с помощью Docker

Сообщение Anonymous »

Я пытаюсь скомпилировать нативный двоичный файл Go для использования в коде Java на Mac. Бинарник должен быть выполнен на хосте Linux, который имеет следующие спецификации: < /p>

Код: Выделить всё

# uname -a
Linux  5.14.0-284.25.1.el9_2.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jul 20 09:11:28 EDT 2023 x86_64 x86_64 x86_64 GNU/Linux
< /code>
Для локального тестирования на Mac я просто генерирую двоичный файл, используя go build -o libmybinary.so -buildmode = c -shefared main.go, но чтобы скомпилировать его в правильном формате для хоста, я использую это вместо этого: < /p>
FROM source as builder

RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o libmybinary.so -buildmode=c-shared main.go
Проблема в том, что если я не использую cgo_enabled = 1 goos = linux goarch = amd64 , двоичный файл не может быть выполнен на хосте, но если я попытаюсь его использовать, я получаю эту ошибку:
1.553 # runtime/cgo
1.553 gcc: error: unrecognized command line option '-m64'
------
ERROR: failed to solve: process "/bin/bash -eo pipefail -c CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o libmybinary.so -buildmode=c-shared main.go" did not complete successfully: exit code: 1
< /code>
Я также пытался заменить < /p>
FROM source as builder
RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o libmybinary.so -buildmode=c-shared main.go
< /code>
с < /p>
FROM --platform=linux/amd64 source as builder
RUN go build -o libmybinary.so -buildmode=c-shared main.go
< /code>
И, похоже, он составляет .so в правильном формате для хоста, но мой код Java не мог найти экспортируемые методы, так как я думаю, что этот путь, по сути, не «кросскомпиляция» в нативном изображении, что приводит к различиям в поведении с CGO и основным набором C.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... ing-docker
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Cross Compiling A Go Native Binary для кода Java с помощью Docker
    Anonymous » » в форуме JAVA
    0 Ответы
    107 Просмотры
    Последнее сообщение Anonymous
  • Cross Compiling A Go Native Binary для кода Java с помощью Docker
    Anonymous » » в форуме Linux
    0 Ответы
    497 Просмотры
    Последнее сообщение Anonymous
  • Cross Compiling A Go Native Binary для кода Java с помощью Docker
    Anonymous » » в форуме Linux
    0 Ответы
    539 Просмотры
    Последнее сообщение Anonymous
  • Почему Java неизвестна: import org.apache.commons.codec.binary.Base64;? [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    130 Просмотры
    Последнее сообщение Anonymous
  • Изменение поведения в Sonar.java.Binary Property
    Anonymous » » в форуме JAVA
    0 Ответы
    111 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Linux»