G++ 没有规则使目标。。。图书馆

G++ 没有规则使目标。。。图书馆,g++,makefile,G++,Makefile,当我尝试编译我的应用程序时,出现以下错误: *** No rule to make target `/mypath/lib/libm.a', needed by `/myPath/bin/appName' 为什么链接器要根据一条绝对路径来寻找libm.a?我开始考虑将编程转换为通灵职业 为什么链接器根据绝对路径查找libm.a 因为你让他这么做的。很可能你打过字 # There were some rules that build your own .a libs myLib.a: ...

当我尝试编译我的应用程序时,出现以下错误:

*** No rule to make target `/mypath/lib/libm.a', needed by `/myPath/bin/appName'

为什么链接器要根据一条绝对路径来寻找libm.a?

我开始考虑将编程转换为通灵职业

为什么链接器根据绝对路径查找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 $@

你需要发布你的makefile来找出问题所在。呵呵,我打赌他不需要,但他肯定会很好:)那么,内森,有什么评论吗?不起作用的代码示例?有什么问题吗?错误消息来自make,而不是链接器,所以这个答案很可能是正确的。