makefile为不同的archtectures设置不同的链接器标志

时间:2017-04-06 15:18:26

标签: c++ gcc makefile linker


我想要一个make文件在windows上编译和链接(进入mylib.dll)和至少两个Linux体系结构,i686和armv61(进入mylib.so)。

如果我手动设置'链接器标志,我的代码编译/链接确定。

但我想根据某些ARC值设置链接器标志,请参阅片段。

<code>
ARCH = "?"
ARCH = $(shell arch)
$(info ARCH  is [$(ARCH)])
LD_FLAGS = "?"
ifeq  "$(ARCH)" "i686"
LD_FLAGS = -shared -lSDL
endif
ifeq  "$(ARCH)" "armv61"
LD_FLAGS = -shared -lSDL -L/usr/lib/arm-linux-gnueabihf 
endif
$(info LD_FLAGS is [$(LD_FLAGS)])
</code>

在我的i686上,我得到:

<code>
ARCH  is [i686]
LD_FLAGS is [-shared -lSDL]
make: Nothing to be done for 'all'.
</code>

在我的armv61上,我得到了:

<code>
ARCH  is [armv6l]
LD_FLAGS is ["?"]
... (error stuff!)
</code>

所以ARCH设置正常但是LD_FLAGS没有,我正在做一些愚蠢的ifeq等。

知道错误是什么,如何修复make文件?

感谢。

1 个答案:

答案 0 :(得分:0)

你写了一个1而不是larmv6l vs armv61