没有规则来制定目标... libm.a

Nat*_*han 1 makefile g++

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

*** No rule to make target `/mypath/lib/libm.a', needed by `/myPath/bin/appName'
Run Code Online (Sandbox Code Playgroud)

为什么链接器根据绝对路径查找libm.a?

P S*_*ved 5

我开始考虑将编程转换为心理事业......

为什么链接器根据绝对路径查找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 $@
Run Code Online (Sandbox Code Playgroud)

哎呦!你需要"系统" libm.a(这是一个数学库,glibc的一部分),但make认为你需要自己的静态库.然后它添加正确的前缀,并且没有找到任何重制规则libm.a.

解决方案可能正在libm.a摆脱先决条件.这是配置脚本或特殊make sanity目标的目的,以检查系统库的存在.

EXT_LIBS=libm.a

appName: appName.o
   g++ $^ $(EXT_LIBS) -o $@
Run Code Online (Sandbox Code Playgroud)