makefile编译产生类似错误"Cannot find a rule to create target libbz2. from dependencies.是什么原因,谢谢

jhwangfei 2007-09-09 04:40:26
makefile编译产生类似错误"Cannot find a rule to create target libbz2. from dependencies.是什么原因,谢谢
...全文
1641 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
dai_weitao 2007-09-12
  • 打赏
  • 举报
回复
你把include放在这个makefile文件的开头.
jhwangfei 2007-09-11
  • 打赏
  • 举报
回复
把这行
LIB_FILE= libchgfile.$(TRUESUFFIX)
直接改成
LIB_FILE= libchgfile.so
就可以成功

但是这样写
LIB_FILE= libchgfile.$(TRUESUFFIX)
...
TRUESUFFIX=so

就不成功,makefile好像允许变量在后面定义的吧
jhwangfei 2007-09-11
  • 打赏
  • 举报
回复
echo "PROJECT_DIR= $(PROJECT_DIR) TRUESUFFIX= $(TRUESUFFIX)"
ld $(LDOSOOPTION) -o $@ $(OBJ_FILE) $(LDLIBS)
两行开头要有TAB键

开头已经有TAB键了,但是还是一样的错,现在关键是TRUESUFFIX没有被解析,但是
在makedll.inc已经有定义为so了,include进来就解析不到
jhwangfei 2007-09-11
  • 打赏
  • 举报
回复
移到前面当然可以但是没什么意义,现在需要从别的文件include进来,而变量在其他文件(makedll.inc)
中定义,但是不知为什么在别的文件定义就无法解析到变量的值导致报上面的错误
dai_weitao 2007-09-11
  • 打赏
  • 举报
回复
可能不允许吧, 你把那个移到前面去试试.
cceczjxy 2007-09-10
  • 打赏
  • 举报
回复
检查你写的makefile,应该是依赖关系没写对.
dai_weitao 2007-09-10
  • 打赏
  • 举报
回复
TRUESUFFIX没有被解析正确, 应该是so或a, 现在是空.
试试楼上的办法.
DanXer 2007-09-10
  • 打赏
  • 举报
回复
echo "PROJECT_DIR= $(PROJECT_DIR) TRUESUFFIX= $(TRUESUFFIX)"
ld $(LDOSOOPTION) -o $@ $(OBJ_FILE) $(LDLIBS)
两行开头要有TAB键
hefuhua 2007-09-10
  • 打赏
  • 举报
回复
为编译 Bzip2 做准备:

make -f Makefile-libbz2_so
make clean

make 参数的含义:

-f Makefile-libbz2_so

这会采用一个另外一个 Makefile 来编译 Bzip2,也就是这里的 Makefile-libbz2_so 文件,它创建一个动态链接库 libbz2.so ,然后把Bzip2的工具都链接到这个库上。

jhwangfei 2007-09-10
  • 打赏
  • 举报
回复
makfile文件如下
COMMIT_DIR=src/chgfile
PUB_INCLUDE_SRC_FILE=
INCLUDE_SRC_FILE= chgfile.h
C_SRC_FILE= chgfile.c
EC_SRC_FILE=
DOC_SRC_FILE=
OBJ_FILE= chgfile.o
EXEC_FILE=
SH_FILE=
EXEC_LOCAL=
LIB_FILE= libchgfile.$(TRUESUFFIX)
C_FLAG= $(COMPILEFLAG)

include $(PROJECT_DIR)/make/makedll.inc
LDLIBS=-L$(LIBDIR) -lzxinfunc -lzxcommon $(SOCKETLIB) $(LSOOPTION)

$(LIB_FILE):$(OBJ_FILE)
echo "PROJECT_DIR= $(PROJECT_DIR) TRUESUFFIX= $(TRUESUFFIX)"
ld $(LDOSOOPTION) -o $@ $(OBJ_FILE) $(LDLIBS)

chgfile.o:chgfile.c

要生成libchgfile.so库,变量$(TRUESUFFIX)在其他文件中定义,但是解析出来该变量为空,报错

Cannot find a rule to create target libchgfile. from dependencies

是编译的方法不对吗
dai_weitao 2007-09-10
  • 打赏
  • 举报
回复
create target libbz2.
这个目标是libbz2. 而不是libbz2.so
makefile不对, 改过来.
饭饭之辈 2007-09-09
  • 打赏
  • 举报
回复
编译规则没指定,也就是说你没告诉编译器怎么生成你要的lib,仔细检查一下你的makefile。
hefuhua 2007-09-09
  • 打赏
  • 举报
回复
推荐参考编译bzip2的方法
http://lamp.linux.gov.cn/Linux/LFS-6.2/chapter06/bzip2.html
hzcpig 2007-09-09
  • 打赏
  • 举报
回复
先make clean看看,这个也是一种可能。
jhwangfei 2007-09-09
  • 打赏
  • 举报
回复
现在就是为了编译生成libbz2.so库,报这个错误导致无法生成
hefuhua 2007-09-09
  • 打赏
  • 举报
回复
确认你系统有libbz2.a和libbz2.so,如/usr/lib/libbz2.*并且tar xvjf a.tar.bz2 a是可以用
如果没有需要安装Bzip2软件包

在确认你对你当前编译目录所以文件所以权
可以用root用户
#chown -R user:user *
该成你登录用户所有
#find . -type f -exec touch {} \;
修改当前目和一下所有文件的时间为当前系统时间

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧