Поддерживает ли Cygwin золотой компоновщик?

Я выполняю тестовый цикл релиза. Одним из тестов для GNU Linux является интеграция с компоновщиком Gold:

export LD=ld.gold
make

Makefile имеет следующую логику для распознавания компоновщика Gold:

# LD gold linker testing
ifeq ($(findstring ld.gold,$(LD)),ld.gold)
GOLD_OPTION = -Wl,-fuse-ld=gold
endif # Gold

Тогда рецепт, который использует это:

cryptest.exe: libcryptopp.a $(TESTOBJS)
    $(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) ./libcryptopp.a $(LDFLAGS) $(GOLD_OPTION) $(LDLIBS)

Тем не менее, при запуске против Cygwin:

g++ -o cryptest.exe -DNDEBUG -g3 -O3 -march=native -pipe bench.o bench2.o test.o \
  validat1.o validat2.o validat3.o adhoc.o datatest.o regtest.o fipsalgt.o dlltest.o \
  ./libcryptopp.a -Wl,-fuse-ld=gold
collect2: fatal error: cannot find 'ld'

Я проверил Cygwin FAQ, но там не упоминается Gold. Тем не менее, он вызывает Binutils, частью которого является золото. И порт не отклоняет -fuse-ld=gold,

Поддерживает ли Cygwin золотой компоновщик? Если так, что я должен делать?


(Похоже, что Cygwin может извлечь выгоду из Gold, так как связывание занимает так много времени. В этой тестовой системе соединение занимает около 15-20 секунд cryptest.exe, Так что это тоже личная цель).

1 ответ

Решение

Нет. На вики-странице, на которую вы ссылаетесь, золото ограничено только форматом ELF. Windows использует формат PE.

Другие вопросы по тегам