Я собираюсь использовать gcc из официальных образов докера по двум причинам:
- не может ждать годы, пока мой дистрибутив linux доставит их официальные пакеты, чтобы я могиспользовать функции последней версии GCC.Сам компиляция gcc из исходного кода требует слишком больших усилий
- хочу легко изменить версии gcc, чтобы увидеть различия
Мне удалось временно заменить команду gcc следующим псевдонимом:
alias gcc="docker run --user $(id -u):$(id -g) --rm -t -v "$PWD":/usr/src/myapp -w /usr/src/myapp gcc:8.2 gcc"
Тогда я могу использовать gcc hello.c
на консоли хоста, и я получаю hello.c, скомпилированный gcc версии 8.2 из образа докера вместо версии 7.3 хоста.
Это работаеттакже хорошо, если исходный файл находится в подкаталоге.Например, gcc foo/hello.c
Проблема заключается в том, что происходит, если исходный файл находится в более высоком каталоге.Например,
cd foo && gcc ../hello.c
Я получаю сообщение об ошибке:
gcc: ошибка: ../hello.cpp: нет такого файла или каталога
Я думаю, это потому, что текущий каталог хоста сопоставлен с рабочим каталогом = /usr/src/myapp
контейнера, а ..
выходит за пределы этого рабочего каталога контейнера.См. Выше -v "$PWD":/usr/src/myapp -w /usr/src/myapp
часть псевдонима.
Есть ли способ преодолеть эту трудность?