最近在移植开发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. 一步一步学RenderMonkey(5)--渲染到纹理(RTT) 【转】

    转载请注明出处:  http://blog.csdn.net/tianhai110 渲染到纹理: 新建一个空effect; 添加渲染目标纹理, Add Texture-> Add Render ...

  2. uv计算

    lightmap shadowmap heightmap 它们有一个自己的camera 对应cameraMatrix float3 TransfromToTextureCoord(float4 Pos ...

  3. 【leetcode】Binary Tree Postorder Traversal

    题目: Given a binary tree, return the postorder traversal of its nodes' values. For example: Given bin ...

  4. 《javascript高级程序设计》读书笔记(四)引用类型

    第五章:引用类型 Object类型 创建object实例的两种方式: 1.new方式 var person = new Object(); person.name = "haozk" ...

  5. 使用ant构建报错,编码GBK的不可映射字符解决方法

    使用ant的核心就是这个build.xml.然后再在cmd中使用ant命令就行了. build.xml构建文件包含一个工程(project). 工程包含若干个目标(target). 目标可以依赖于其他 ...

  6. Android跟踪NDK崩溃信息

    1.NDK编译jni时增加调试信息: $NDK_ROOT/ndk-build -B NDK_DEBUG=1 2.发生崩溃时,logcat中收集日志: - ::): Added shared lib / ...

  7. Discuz常见小问题2-如何清空,删除,清除全部DIY的数据

    如果所有diy都不想要了,手动清空_common_block._common_diy_data与_common_template_block表,然后删除\data\diy\下的所有子文件夹,保证你以前 ...

  8. PhoneGap录像 以及 录音功能 简单代码实现3

    1,录音功能 navigator.device.capture.captureAudio( function(files){//成功回调函数 Ext.getCmp("video_files_ ...

  9. 十分钟使用ionic Framework开发一个跨平台移动应用

    Ionic是一个前端的框架,帮助开发人员使用HTML5, CSS3和JavaScript做出原生应用. ionic的理念类似前端开发的BootStrap,目标是封装HTML5移动跨平台开发的最佳实践. ...

  10. 关于苹果开发证书失效的解决方式(2016年2月14日Failed to locate or generate matching signing assets)

    前言: 从2月14日開始,上传程序的同学可能会遇到提示上传失败的提示. 而且打开自己的钥匙串,发现所有的证书所有都显示此证书签发者无效. Failed to locate or generate ma ...