Make-файл для общих библиотек?

Только что возникла такая же проблема в 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.

6
задан dwc 20 May 2009 в 12:21
поделиться

2 ответа

Для переносимости я бы посмотрел на интеграцию 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 .

10
ответ дан 8 December 2019 в 14:46
поделиться

Создание разделяемых библиотек зависит от платформы. Например, вы используете следующие флаги: нормально для GCC для платформ ELF, для cygwin, например, вы не добавляете -fPIC для некоторых других платформ и компиляторов, вам нужны другие флаги.

Вам нужен один из:

  • Предоставьте возможность устанавливать флаги для пользовательской платформы .
  • Используйте стандартную систему сборки, например Autotools
6
ответ дан 8 December 2019 в 14:46
поделиться
Другие вопросы по тегам:

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