我正在执行发布测试周期。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。但是,它确实调用了 Gold 所属的 Binutils。并且端口不拒绝-fuse-ld=gold
。
Cygwin 是否支持 Gold 链接器?如果是这样,我该怎么办?
(Cygwin 似乎可以从 Gold 中受益,因为链接需要很长时间。在这个测试系统上,链接大约需要 15 到 20 秒cryptest.exe
。所以这也是个人目标)。