多文件编译中undefinedreferenceto库函数问题-创新互联

undefined reference to是一个非常普遍的问题,而且出现这种提示之后有很多的原因。但是碰到的一个问题却非常诡异。核心问题就是多文件连接时的顺序问题!多文件编译中undefinedr
eferenceto库函数问题

我是进行多文件编译,调用了两个开源库函数。我在我自己的虚拟机上的Fedora系统上能够编译连接通过并顺利执行,但是切换到Ubuntu系统的时候,各个文件单独编译能够编译通过,但是把各个目标文件连接成可执行文件的时候却报错,undefined reference to所有的引用的库函数。

为博州等地区用户提供了全套网页设计制作服务,及博州网站建设行业解决方案。主营业务为做网站、成都网站制作、博州网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

于是我搜索了各种相关问题的原因,并一遍一遍地尝试,最终在调整了连接命令的顺序之后在Ubuntu上连接通过。我的Makefile文件中连接生成可执行文件命令如下:

$(CC) $(CFLAGS) -I$(INCLUDEX) -I$(INCLUDEH) -L$(LOCAL) $(LIB) $(OBJECTS) -o s3

这在Fedora下能够连接正确;但是在Ubuntu下报错。于是我修改成了如下语句:

$(CC) $(CFLAGS) -I$(INCLUDEX) -I$(INCLUDEH) -L$(LOCAL)  -o s3 $(OBJECTS)  $(LIB)

连接成功!

其中OBJECTS= object_response_header.o request_analysis.o  bucket_response_header.o delete_bucket.o xml.o container.o

我想这可能和Fedora以及Ubuntu的连接机制不同,仅供参考。


分享文章:多文件编译中undefinedreferenceto库函数问题-创新互联
标题网址:http://pwwzsj.com/article/ppdce.html