最近在移植开发openssl库时,编译自己的动态库遇到undefined reference to错误,在此记录一下

从openssl官网移植openssl库,得到libssl.a和libcrypto.a两个静态库,以及openssl的头文件

我在openssl库的基础上封装了自己的代码,然后生成libmyopenssl.a静态库,文件分布如下

在另外的应用中又需要用到自己封装的接口,即需要用到libmyopenssl.a库

开始写的Makefile是这样的

#external libraries

LIBS += -L ../openssl/_build -lmyopenssl

只包含了自己编译的静态库文件myopenssl

这样会导致undefined reference to错误

然后修改如下:

LIBS += -L ../openssl/lib/ -lssl -lcrypto -L ../openssl/_build -lmyopenssl

这样编译还出现undefined reference to错误

原因是myopenssl静态库依赖ssl和crypto静态库,需要把被依赖的库ssl和crypto放在后面,修改如下:

LIBS += -L ../openssl/_build -lmyopenssl -L ../openssl/lib/ -lssl -lcrypto

这样编译通过。

所以总结如下:

编译时当链接的库文件(myopenssl)中又使用了另外别的库文件时(ssl和crypto),需要把另外的库(ssl和crypto)也链接进来,并且链接时有顺序,顺序是依赖其他库的库(myopenssl)一定要放到被依赖库(ssl和crypto)的前面

undefined reference to错误的更多相关文章

  1. 关于“undefined reference to”错误

    哪些问题可能产生undefined reference to错误? 1.没用生成目标文件 比如说hello.o文件,由于名字写错.路径不对.Makefile缺少. 2.没用添加相应的库文件.so/dl ...

  2. gcc链接程序时出现undefined reference to""错误

    如:: undefined reference to ‘mq_unlink',意思是指函数mq_unlink没有定义. 可以使用如下步骤找到该函数所在的库: 1).查找哪些库包含了或使用了该函数:gr ...

  3. 解决引用openssl静态库libcrypto.a和libssl.a出现undefined reference to错误的问题

    最近在做使用openssl链接http和https的项目,编译时出现以下问题. /usr/local/openssl/lib/libcrypto.a(async.o): In function `as ...

  4. Qt 信号发射部分 undefined reference to错误

    在使用信号与槽很容易发生 undefined reference to 发射信号  ①继承QObject ②添加Q_OBJECT ③执行qmake ④构建 然后就可以运行啦!但是不知道是为什么,悄咪咪 ...

  5. codeBlocks编译undefined reference to错误

    是没有把c文件编译进去的原因. 右键项目,选择属性,弹出窗体 然后选择build targets 在最下面有个build target files:中把c文件勾选.点击ok重新编译即可. Code:: ...

  6. 解决qt程序的链接阶段出现 undefined reference 错误

    错误的原因是我使用到了 QT Widgets 模块中的东西,但是makefile的链接的参数中没有 widgets.其实官网上提到了这个: http://doc.qt.io/qt-5/qtwidget ...

  7. "undefined reference to" 问题解决方法 -链接问题

    最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func' 关于unde ...

  8. [转]undefined reference问题总结

    转自http://ticktick.blog.51cto.com/823160/431329 最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.t ...

  9. "undefined reference to" 问题解决方法

    近期在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似以下这种错误: (.text+0x13): undefined reference to `func' 关于undef ...

随机推荐

  1. [GLSL]着色器周记02——火焰特效 【转】

    http://www.cnblogs.com/tkgamegroup/p/4214081.html 这周学了好多.包括伪随机数.柏林噪声.先说伪随机数.伪随机数我们用的是周期函数而不是那种由前一项乘一 ...

  2. Oracle两个时间段是否重合、冲突

    经常会碰到比较两个时间段是否冲突的情况. 思路1 最开始比较2个时间是否的思路是,时间段的重叠.  但是比较时间段重叠的情况,就有几种情况, 1. 时间前段冲突.   时间A:  2015-10-01 ...

  3. Javascript code for soft keyboard

    <style>     BODY {     SCROLLBAR-FACE-COLOR: #f0f0f6; FONT-SIZE: 9pt; BACKGROUND-ATTACHMENT: f ...

  4. SonarQube install on Kubernetes

    Sonarqube搭建代码 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: postgres labels: app: ...

  5. Maven 多套环境配置

    在Java开发中会配置不同环境,可通过Maven的profile指定不同的环境配置,pom.xml配置如下: <project xmlns="http://maven.apache.o ...

  6. isset() unset()

    检测变量是否设置,并且不是 NULL. 如果已经使用 unset() 释放了一个变量之后,它将不再是 isset().若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE. ...

  7. Errors occurred during the build

    Errors occurred during the build.Errors running builder 'Integrated External Tool Builder' on projec ...

  8. ionic emulate android log

    RubertdeMacBook-Pro:myApp Rubert$ ionic emulate android Running command: /Users/Rubert/myApp/hooks/a ...

  9. hibernate 一对多双向

    package com.bjsxt.hibernate; import java.util.HashSet; import java.util.Set; import javax.persistenc ...

  10. .NET Remoting与Socket、Webservice和WCF的比较及优势 (转)

    1:Socket VS Remoting 使用socket无疑是效率最高的.但是,在复杂的接口环境下,Socket的开发效率也是最低的.故在兼顾开发效率的情况下,可以使用Remoting来代替Sock ...