当我试图编译我的应用程序时,我会得到以下错误:
*** No rule to make target `/mypath/lib/libm.a', needed by `/myPath/bin/appName'为什么链接器要根据绝对路径寻找libm.a?
发布于 2009-11-09 20:53:34
我开始考虑用编程来实现心灵的职业.
为什么链接器要根据绝对路径寻找libm.a?
因为你让他这么做。很可能你已经打字了
# There were some rules that build your own .a libs
myLib.a: ...
...
# Handy rule to direct your libs into lib/ folder!
vpath %.a /mypath/lib
appName: appName.o libm.a
g++ $^ -o $@哇哦!您需要"system“libm.a (这是一个数学库,是glibc的一部分),但是make认为您需要自己的静态库。然后,它添加了适当的前缀,并且找不到任何规则来重做libm.a。
解决方案可能是将libm.a从先决条件中移除。这就是配置脚本或特殊的make sanity目标来检查系统库是否存在的目的。
EXT_LIBS=libm.a
appName: appName.o
g++ $^ $(EXT_LIBS) -o $@https://stackoverflow.com/questions/1703624
复制相似问题