多文件编译中undefinedreferenceto库函数问题-创新互联
undefined reference to是一个非常普遍的问题,而且出现这种提示之后有很多的原因。但是碰到的一个问题却非常诡异。核心问题就是多文件连接时的顺序问题!
标题名称:多文件编译中undefinedreferenceto库函数问题-创新互联
文章来源:http://scyanting.com/article/ppdce.html
我是进行多文件编译,调用了两个开源库函数。我在我自己的虚拟机上的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://scyanting.com/article/ppdce.html