Докер.Невозможно выполнить скопированные файлы с хоста на изображение - PullRequest
0 голосов
/ 25 сентября 2018

мой Dockerfile:

FROM ubuntu:latest
MAINTAINER Dawid Stec <dawid.stec@gmail.com>
LABEL Description="Docker image for building arm-embedded"

RUN apt-get update && apt-get install -y \
  git \
  cmake \
  make \
  automake \
  libffi-dev \
  libssl-dev \
  libusb-1.0.0 \
  libusb-1.0.0-dev \
  software-properties-common \
  ccache

COPY toolchain /home/tools

ENV PATH="/home/tools/bin:${PATH}"

, затем я создаю образ:

sudo docker build -t lpc-arm .

и захожу в образ:

docker run -i -t lpc-arm /bin/bash

В работающем контейнере я вижу скопированные файлы.

root@58f75da4406c:/home/tools/bin# ls
arm-none-eabi-addr2line  arm-none-eabi-c++filt  arm-none-eabi-gcc        arm-none-eabi-gcc-ranlib  arm-none-eabi-gdb-py  arm-none-eabi-nm       arm-none-eabi-readelf
arm-none-eabi-ar         arm-none-eabi-cpp      arm-none-eabi-gcc-5.4.1  arm-none-eabi-gcov        arm-none-eabi-gprof   arm-none-eabi-objcopy  arm-none-eabi-size
arm-none-eabi-as         arm-none-eabi-elfedit  arm-none-eabi-gcc-ar     arm-none-eabi-gcov-tool   arm-none-eabi-ld      arm-none-eabi-objdump  arm-none-eabi-strings
arm-none-eabi-c++        arm-none-eabi-g++      arm-none-eabi-gcc-nm     arm-none-eabi-gdb         arm-none-eabi-ld.bfd  arm-none-eabi-ranlib   arm-none-eabi-strip

но когда я пытаюсь выполнить arm-none-eabi-gcc Я получаю ошибку:

root@58f75da4406c:/home/tools/bin# ./arm-none-eabi-gcc
bash: ./arm-none-eabi-gcc: No such file or directory

Я должен быть в состоянии выполнитьэта программа, но почему я не могу?

Команда в хосте: ls -lrs toolchain /

4 drwxr-xr-x 4 solitech solitech   4096 wrz 24 14:21 share
  4 -rwxr-xr-x 1 solitech solitech   4056 lip 21  2016 release.txt
  4 drwxr-xr-x 3 solitech solitech   4096 wrz 24 14:21 redlib
 16 -rwxr-xr-x 1 solitech solitech  13523 lip 21  2016 readme.txt
176 -rwxr-xr-x 1 solitech solitech 178692 lip 21  2016 license.txt
  4 drwxr-xr-x 3 solitech solitech   4096 wrz 24 14:21 lib
  4 drwxr-xr-x 3 solitech solitech   4096 wrz 24 14:21 features
  4 drwxr-xr-x 2 solitech solitech   4096 wrz 24 14:21 bin
  4 drwxr-xr-x 6 solitech solitech   4096 wrz 24 14:21 arm-none-eabi

и в изображении:

  4 drwxr-xr-x 4 root root   4096 Sep 24 12:21 share
  4 -rwxr-xr-x 1 root root   4056 Jul 21  2016 release.txt
  4 drwxr-xr-x 3 root root   4096 Sep 24 12:21 redlib
 16 -rwxr-xr-x 1 root root  13523 Jul 21  2016 readme.txt
176 -rwxr-xr-x 1 root root 178692 Jul 21  2016 license.txt
  4 drwxr-xr-x 3 root root   4096 Sep 24 12:21 lib
  4 drwxr-xr-x 3 root root   4096 Sep 24 12:21 features
  4 drwxr-xr-x 2 root root   4096 Sep 24 12:21 bin
  4 drwxr-xr-x 6 root root   4096 Sep 24 12:21 arm-none-eabi

Изображение доступно по адресу: xandareva/lpc-arm.Вы можете вытащить его и проверить себя.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Вы пытаетесь запустить 32-разрядный исполняемый файл на 64-разрядной архитектуре:

root@8ccee441d384:/home/tools/bin# file arm-none-eabi-gcc
arm-none-eabi-gcc: ELF 32-bit LSB executable, Intel 80386, version 1 
(SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for 
GNU/Linux 2.6.8, stripped

Вам необходимо добавить i386 архитектуру и libc6:i386, libncurses5:i386, libstdc++6:i386пакеты библиотек:

dpkg --add-architecture i386
apt-get update
apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

После установки этих пакетов мне удалось запустить двоичный файл:

root@8ccee441d384:/home/tools/bin# ./arm-none-eabi-gcc
arm-none-eabi-gcc: fatal error: no input files
compilation terminated.

Для получения дополнительной информации об этом см. https://askubuntu.com/questions/133389/no-such-file-or-directory-but-the-file-exists

0 голосов
/ 25 сентября 2018

Я думаю, что arm-none-eabi-gcc - это двоичный файл, созданный для архитектуры arm, а вы пытаетесь выполнить его в контейнере x86-64.

Попробуйте изменить базовый образ на https://hub.docker.com/r/arm32v7/ubuntu/ или другой с необходимой архитектурой.Здесь у вас есть несколько ссылок на эти изображения: https://github.com/docker-library/official-images#architectures-other-than-amd64

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...