Только что возникла такая же проблема в Linux Mint 18.1 (Ubuntu 16.04) с AWS ECR и последней версией Docker 17.06.1-ce, используемой в последнем клиенте Python Docker 2.5.1. Вход в систему сработал, нажать не удалось.
Удаление ~/.docker/config.json
помогло. Он содержал только, вероятно, устаревший токен авторизации.
Я не думаю, что это как-то связано с операционной системой. В моем случае это работало ранее, и единственное изменение, которое я могу вспомнить, - это обновление с репо Ubuntu docker.io 1.12
до репо Docker docker-ce 17.06
.
Для переносимости я бы посмотрел на интеграцию libtool
.
define compile_rule
libtool --mode=compile \
$(CC) $(CFLAGS) $(CPPFLAGS) -c $<
endef
define link_rule
libtool --mode=link \
$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
endef
LIBS = libmystuff.la
libmystuff_OBJS = libmystuff.lo otherstuff.lo
%.lo: %.c
$(call compile_rule)
libmystuff.la: $(libmystuff_OBJS)
$(call link_rule)
install/%.la: %.la
libtool --mode=install \
install -c $(notdir $@) $(libdir)/$(notdir $@)
install: $(addprefix install/,$(LIBS))
libtool --mode=finish $(libdir)
libtool
автоматически добавит -fPIC
/ -DPIC
/ -shared
флаги по мере необходимости и генерировать любые файлы .o
/ .a
/ .so
будет использоваться на текущей платформе.
Или вы можете использовать интеграцию libtool Automake .
Создание разделяемых библиотек зависит от платформы. Например, вы используете следующие флаги: нормально для GCC для платформ ELF, для cygwin, например, вы не добавляете -fPIC для некоторых других платформ и компиляторов, вам нужны другие флаги.
Вам нужен один из: