我的makefile無法確定ld的make和版本。Shell(sh),Makefile和Regex
典型的版本字符串(我期望)如下。我在中間的某個地方找(1)固定在左邊GNU LD,(2)版本:
$ ld -v
GNU ld (GNU Binutils for Ubuntu) 2.20.1-system.20100303
使用星號時,它不匹配。下面,計數(從-c)始終爲0。
EGREP = egrep
GNU_LD210_OR_LATER = $(shell $(LD) -v 2>&1 | $(EGREP) -i -c "^gnu ld * (2.1[0-9]|2.[2-9])")
如果我刪除了星號和版本,我能趕上的什麼,我找兼職:
GNU_LD = $(shell $(LD) -v 2>&1 | $(EGREP) -i -c "^gnu ld")
後來,我去上使用類似的標誌:
ifeq ($(GNU_LD210_OR_LATER),1)
LDFLAGS += -Wl,-z,nodlopen
endif
ifneq ($(GNU_LD212_OR_LATER),0)
LDFLAGS += -Wl,--exclude-libs,ALL
endif
ifneq ($(GNU_LD215_OR_LATER),0)
LDFLAGS += -Wl,-z,relro -Wl,-z,now
endif
是否有任何問題與我想使用的正則表達式?或者shell的正則表達式解釋器有問題嗎? (我也意識到我應該使用\.
- 爲了清楚起見省略)。
傑夫
羅伯特 - 我扔點給你。我不需要parens(它們可能不存在於Fedora,BSD等LD中)。但我確實需要這段時間。傑夫 – jww