undefined reference to 解决

源码安装mysql中间件atlas,make时报错

./.libs/libmysql-proxy.so: undefined reference to `EVP_CIPHER_CTX_init'
./.libs/libmysql-proxy.so: undefined reference to `EVP_DecodeFinal'
./.libs/libmysql-proxy.so: undefined reference to `EVP_EncodeFinal'
./.libs/libmysql-proxy.so: undefined reference to `EVP_EncodeUpdate'
./.libs/libmysql-proxy.so: undefined reference to `EVP_DecodeInit'
./.libs/libmysql-proxy.so: undefined reference to `EVP_des_ecb'
./.libs/libmysql-proxy.so: undefined reference to `EVP_DecryptFinal_ex'
./.libs/libmysql-proxy.so: undefined reference to `EVP_CIPHER_CTX_cleanup'
./.libs/libmysql-proxy.so: undefined reference to `EVP_DecryptInit_ex'
./.libs/libmysql-proxy.so: undefined reference to `EVP_DecodeUpdate'
./.libs/libmysql-proxy.so: undefined reference to `EVP_DecryptUpdate'
./.libs/libmysql-proxy.so: undefined reference to `EVP_EncryptFinal_ex'
./.libs/libmysql-proxy.so: undefined reference to `EVP_EncodeInit'
./.libs/libmysql-proxy.so: undefined reference to `EVP_EncryptInit_ex'
./.libs/libmysql-proxy.so: undefined reference to `EVP_EncryptUpdate'
collect2: ld returned 1 exit status
make[3]: *** [mysql-binlog-dump] Error 1
make[3]: Leaving directory `/root/Atlas-master/src'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/root/Atlas-master/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/Atlas-master'
make: *** [all] Error 2
解决:configure时LDFLAGS使用-lcrypto。在安装脚本bootstrap.sh中已指出。

参考:http://blog.sina.com.cn/s/blog_45497dfa0100nxi3.html

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: "undefined reference to" 是一个编译错误,通常是由于缺少库文件或函数定义引起的。解决方法包括: 1. 确保库文件已经正确安装并且在编译时已经链接到程序中。 2. 检查函数定义是否正确,包括函数名、参数和返回类型等。 3. 如果使用了第三方库,确保已经正确包含头文件并链接库文件。 4. 如果使用了多个源文件,确保所有源文件都已经正确编译并链接到程序中。 5. 如果使用了模板或者宏定义,确保它们已经正确展开并且没有语法错误。 6. 如果使用了静态变量或者全局变量,确保它们已经正确定义并且没有重复定义。 总之,解决 "undefined reference to" 错误需要仔细检查代码和编译选项,找出问题所在并进行修复。 ### 回答2: undefined reference to(未定义的引用)是C++程序编译时最常见的错误之一。这种错误通常会出现在缺少头文件或者库文件的情况下。 解决undefined reference to错误的方法主要有以下几种: 1.头文件或者库文件没有包含。在编写程序代码时,使用到的函数、变量等需要在程序中被声明,否则编译器将会无法识别这些内容。因此,在写代码时,需要引入相应的头文件或者库文件。 2.库不匹配。当使用库文件时,需要检查库文件是否与系统环境相匹配。在Linux系统中,不同的库有不同的命名规则,因此需要确认库文件是否命名正确,是否放在正确的位置。 3.函数定义不完整。当出现未定义的引用时,可能是函数定义不完整导致的。检查代码中函数实现的完整性,确保没有遗漏任何必要元素。 4.变量调用不正确。当调用某个变量时,需要确认变量是否已经被正确的定义。如果没有被定义,就会出现undefined reference to错误。 总之,当出现undefined reference to错误时,尽管看起来比较恼人,但通常只需要检查上述几种错误原因,并对代码进行相应的修正,就能够充分解决问题。 ### 回答3: 当你编译程序时,可能会遇到“未定义引用”的错误,这通常是由于缺少某些库或文件的定义或链接问题引起的。最常见的解决方法是确保你包含了正确的库文件和头文件,以及正确地链接这些文件。以下是一些可能有用的解决方法: 1. 确保源代码文件中包含了你需要使用的所有头文件和库文件,并在编译命令中正确地链接这些文件。 2. 确保库文件被正确地安装和配置。如果你自己编译库文件,要确保编译和安装过程正确无误。 3. 检查你的编译器是否支持你需要使用的库文件。有时候,你的编译器版本或操作系统版本可能不支持某些库文件。 4. 检查是否有任何拼写错误或其他语法错误,并在需要的地方进行更正。 5. 如果你使用的是C++程序,则可能需要加上“extern C”语句来解决链接问题。这个语句可以将C++函数的名称转换为C函数的名称,以允许C++函数可以与C函数互相调用。 6. 最后,如果你不知道如何解决这个问题,可以在网络上搜寻相关的解决方案。许多社区和论坛都有关于处理“未定义引用”的问题的讨论,你可以从中找到有用的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上海阿丽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值