那些报错之 error: undefined reference to ‘ ‘ ...

解决编译错误:undefined reference to 错误
当遇到类似'undefined reference to WIFEXITES'和'undefined reference to WEXITSTATUS'的编译错误时,这通常是因为在编译过程中缺少了系统库引用。这两个函数来源于系统头文件wait.h。解决方法是将该头文件引入到源代码中,例如在mast.c文件中加入`#include <wait.h>`。通过正确引用头文件,可以消除这类编译错误。

undefined reference to ’ ’ 类报错:

一般出现在安装软件的make步骤中


以一个此类报错为例:

报错内容如下:

error: undefined reference to ‘WIFEXITES’
error: undefined reference to ‘WEXITSTATUS’
在这里插入图片描述


原因分析:

1. 此类报错一般由于在编译mast.c文件时不识别一些函数或者变量导致,所以要确定不识别的这个参数到底是个什么东东,来自哪里!!
2. 这个报错经查询(度娘、谷歌搜索就行)此参数来自系统库wait.h (/usr/include/wait.h)


解决方案:

提示:知道问题就好解决了。我们把这个头文件加到mast.c中就好了。

.....
#include "/usr/include/wait.h"

此类报错解决思路都是一样的
如有问题,请留言,go go go…

在 Qt 构建过程中遇到 `'undefined reference to ERR_load_crypto_strings'` 的链接错误,通常与 OpenSSL 库的使用方式和版本有关。以下是详细的分析和解决方法: 当项目中使用了 OpenSSL 提供的加密功能,并且代码中调用了 `ERR_load_crypto_strings()` 函数用于加载错误字符串时,如果链接器无法找到该符号定义,则会报出此错误。在 OpenSSL 1.1.0 及以上版本中,该函数已被弃用并移除,取而代之的是自动加载错误信息的功能[^4]。 ### 检查 OpenSSL 版本并调整代码 如果当前系统中安装的 OpenSSL 版本为 1.1.0 或更高版本,那么 `ERR_load_crypto_strings()` 已不再需要手动调用。可以检查代码中是否仍然存在对该函数的引用,并将其删除或通过条件编译进行兼容性处理: ```c #include <openssl/err.h> int main() { #if OPENSSL_VERSION_NUMBER < 0x10100000L ERR_load_crypto_strings(); #endif // 其他初始化逻辑 return 0; } ``` 上述代码片段确保仅在使用低于 1.1.0 的 OpenSSL 版本时才调用 `ERR_load_crypto_strings()`,从而实现跨版本兼容性[^2]。 ### 确保正确链接 OpenSSL 库 在构建 Qt 项目时,必须确保链接器能够正确识别并链接 OpenSSL 相关库。可以在 `.pro` 文件中添加以下内容以确保 `-lssl` 和 `-lcrypto` 被包含在链接参数中: ```qmake LIBS += -lssl -lcrypto ``` 此外,在某些平台上(如 Linux),链接顺序可能会影响符号解析。应确保依赖项的顺序正确,例如将其他依赖 OpenSSL 的库放在 `-lssl` 和 `-lcrypto` 之后。 ### 验证 OpenSSL 安装环境 可以通过以下命令确认系统中安装的 OpenSSL 库路径和版本信息: ```bash ldconfig -p | grep libssl ldconfig -p | grep libcrypto openssl version ``` 若发现版本不匹配或路径异常,可尝试重新安装对应版本的 OpenSSL 开发库。对于基于 Red Hat 的发行版,可以使用以下命令安装 32 位支持所需的组件: ```bash yum install -y libgcc.i686 glibc-devel.i686 libstdc++.i686 zlib.i686 zlib-devel.i686 libstdc++-devel.i686 glibc-static.i686 ``` 这有助于解决因架构或缺失依赖而导致的链接问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值