undefined reference to错误

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

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

我在openssl库的基础上封装了本身的代码,而后生成libmyopenssl.a静态库,文件分布以下接口

 

在另外的应用中又须要用到本身封装的接口,即须要用到libmyopenssl.a库ssl

开始写的Makefile是这样的开发

#external librariesopenssl

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

只包含了本身编译的静态库文件myopenssl基础

这样会致使undefined reference to错误file

而后修改以下:im

 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)的前面

相关文章
相关标签/搜索