热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux编译object,linux通过makefile编译静态链接库,有问题求解?

在一个工程里已经能够编译好了,现在要把这几个tinyxml.otinyxmlparse.otinyxmlerror.otinystr.o这几个文件封装成静态库arcr

在一个工程里已经能够编译好了, 现在要把这几个tinyxml.o tinyxmlparse.o  tinyxmlerror.o tinystr.o 这几个文件封装成静态库  ar cr tingxml.a tingxml.o    ar cr.........

在Makefile 模仿其他地方加静态库的形式

INCLUDE_DIR+=-I$(GUI_DIR)/include

STATIC_LIB_LIST+=$(PROJECT_ROOT)/objects/tinystr.a $(PROJECT_ROOT)/objects/tinyxml.a $(PROJECT_ROOT)/objects/tinyxmlerror.a $(PROJECT_ROOT)/objects/tinyxmlparser.a

路径已经核对过了

下面makefile是这样处理的

#增加公共的库

STATIC_LIB_PATH+=

STATIC_LIB_LIST+=

CFLAGS+=$(INCLUDE_DIR)

LDFLAGS+=$(STATIC_LIB_LIST)

DEPFILE:=$(PROJECT_ROOT)/deps

.PHONY:all

all:$(DEPFILE) $(EXE_NAME)

$(DEPFILE): $(PROJECT_SRC) Makefile

@echo "Generating new dependency file...";

@-rm -f $(DEPFILE)

@for f in $(PROJECT_SRC); do

OBJ=$(OBJECTS_DIR)/`basename $$f|sed -e 's/.cpp/.o/' -e 's/.c/.o/'`;

echo $$OBJ: $$f>> $(DEPFILE);

echo '$(CC) $$(CFLAGS)  -c -o $$@ $$^'>> $(DEPFILE);

done

-include $(DEPFILE)

$(EXE_NAME):$(OBJECT_FILE)

#make -C ./filemanage

$(CC) $(CFLAGS) $(OBJECT_FILE) -o "$@" $(LDFLAGS) -L$(LIBS)

我把之前链接的这几个注释掉

#OBJECT_FILE+=$(OBJECTS_DIR)/tinystr.o

#OBJECT_FILE+=$(OBJECTS_DIR)/tinyxml.o

#OBJECT_FILE+=$(OBJECTS_DIR)/tinyxmlerror.o

#OBJECT_FILE+=$(OBJECTS_DIR)/tinyxmlparser.o

再编译后出错了/home/wujianhong/app/common/objects/tinyxmlparser.a(tinyxmlparser.o): In function `TiXmlDocument::SetError(int, char const*, TiXmlParsingData*, TiXmlEncoding)':

tinyxmlparser.cpp:(.text+0xfdc): undefined reference to `TiXmlBase::errorString'

collect2: ld returned 1 exit status

make: *** [/home/wujianhong/app/common/../user/release/hisilicon_app_dvr] 错误 1

有人帮忙吗,再提供信息

|

将静态库的文件名前面加上lib

例如:

ar cr tingxml.a tingxml.o

改成

ar cr libtingxml.a tingxml.o

|

虽然一般来说linux下库要加前缀lib,

但从错误提示来看并不是这个原因。因为并不是说找不到库,而是说库内的函数定义找不到。

所以除非代码本身的错误的话,这应该是库的链结顺序引起的。楼主要保证最基本的库放在最右边。

|

和动态库加载方法一样试试 -L$(PROJECT_ROOT)/objects/ -ltinystr



推荐阅读
author-avatar
mindylee
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有