【问题标题】:/usr/bin/ld: cannot find -lioutil in Makefile/usr/bin/ld: 在 Makefile 中找不到 -lioutil
【发布时间】:2019-09-30 14:17:55
【问题描述】:

我想做如下的makefile,但我收到了这个错误:

gcc frparse.o frtags.o frscan.o frinit.o frstop.o frfoot.o frio.o -L/usr/local/image/lib/sgi -lioutil -lutil -o frparse

/usr/bin/ld: 找不到 -lioutil

collect2:错误:ld 返回 1 个退出状态 Makefile:17:目标“frparse”的配方失败 make: *** [frparse] 错误 1

如果您能指导我,我将不胜感激。

IMLIB   = /usr/local/image/lib/sgi
LLIBS   = -lioutil -lutil

it: frparse frcheck pgrep
OBJ = frparse.o frtags.o frscan.o frinit.o frstop.o frfoot.o frio.o


frparse.o: Makefile frparse.h frio.h frproto.h frstop.h frparse.c
frinit.o: Makefile frparse.h frproto.h frinit.c
frscan.o: Makefile frio.h frstop.h frscan.c
frfoot.o: Makefile frparse.h frproto.h frstop.h frfoot.c
frtags.o: Makefile frparse.h frio.h frproto.h frstop.h frtags.c
frstop.o: Makefile frstop.h frstop.c
frio.o: Makefile frio.c

frparse: $(OBJ)
        gcc $(OBJ) -L$(IMLIB) $(LLIBS) -o $@


frcheck: frcheck.o
        gcc frcheck.o -L$(IMLIB) $(LLIBS) -o $@

pgrep: pgrep.o
        gcc pgrep.o -L$(IMLIB) $(LLIBS) -o $@

.c.o:
#   cc -c -O2 -mips2 $<
        gcc -c -g $<

【问题讨论】:

  • 你在某处有图书馆libioutil.a吗?在哪里?请edit您的问题添加此信息。
  • 似乎libioutil.a(或.so,或...)在加载程序可以找到的地方不存在。检查图书馆在哪里;忍受装载机正在寻找正确的地方。

标签: c makefile gnu


【解决方案1】:

关于:

.c.o:
#   cc -c -O2 -mips2 $< 
    gcc -c -g $<   

注释# 也必须通过&lt;tab&gt; 缩进,否则配方永远不会执行第三行

另外,语法有点过时建议:

%.o:%.c

配方的第一行

但是,关于您的问题:

目录中是否真的有一个名为libioutil.so的库文件:

/usr/local/image/lib/sgi

【讨论】:

  • 模式规则是 GNU 主义,所以在 GNU 完成接管世界之前,后缀规则语法不会过时。就 POSIX 而言,says“包含字符 '%' 和 '"' 的目标的解释是实现定义的。”后缀规则(相对于模式规则)是实现可移植性的方法,尤其是,在基于 Autotools 的项目中,尽管 Autotools 本身是一个 GNU 项目。
猜你喜欢
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 2015-02-23
  • 1970-01-01
  • 2011-07-16
  • 2013-04-08
  • 2012-05-17
  • 2020-04-14
相关资源
最近更新 更多