zoukankan      html  css  js  c++  java
  • 多文件编译中 undefined reference to 库函数问题

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

    我是进行多文件编译,调用了两个开源库函数。我在我自己的虚拟机上的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的连接机制不同,仅供参考。

  • 相关阅读:
    TestNG并发测试包
    @Valid的坑
    spring boot 下 spring security 自定义登录配置与form-login属性详解
    在eclipse上搭建springBoot
    分页问题
    谷歌chrome://chrome-urls/
    chrome中清除dns缓存
    pg中的非varchar类型的模糊搜索
    spring中用xml配置构造注入的心得
    Flask-Limiter使用详细说明
  • 原文地址:https://www.cnblogs.com/hahawgp/p/3008795.html
Copyright © 2011-2022 走看看