You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用c-ares库时遇undefined symbol: ares_dns_parse错误求助

解决Ubuntu下调用c-ares v1.31.0的ares_dns_parse函数时的未定义符号错误

编译时能找到函数声明但运行时报undefined symbol: ares_dns_parse,本质是链接阶段未正确关联c-ares库,或者运行时系统找不到动态库文件,按以下步骤排查解决:

1. 检查编译命令是否添加库链接参数

编译时必须通过-lcares参数告诉gcc链接c-ares库,正确的编译命令格式应为:

gcc your_program.c -o your_program -lcares

如果c-ares安装在非系统默认路径(比如自定义的/opt/c-ares),还需要用-L指定库所在目录:

gcc your_program.c -o your_program -L/opt/c-ares/lib -lcares

2. 确保运行时能找到动态库

如果已经加了-lcares仍报错,大概率是系统运行时找不到libcares.so:

  • 临时生效:设置环境变量指定库路径,再运行程序:
    export LD_LIBRARY_PATH=/path/to/c-ares/lib:$LD_LIBRARY_PATH
    ./your_program
    
  • 永久生效:将上述环境变量添加到~/.bashrc或/etc/profile文件中,执行source ~/.bashrc生效。
  • 若库安装在/usr/local/lib,可执行sudo ldconfig更新系统库缓存,让系统自动识别。

3. 验证库文件是否包含目标符号

用nm命令检查c-ares动态库是否真的提供了ares_dns_parse符号:

nm -D /path/to/libcares.so | grep ares_dns_parse

如果无输出,说明你安装的c-ares库未包含该函数:

  • 确认安装的是v1.31.0版本(该版本确实包含ares_dns_parse);
  • 若为源码编译,检查configure参数是否禁用了相关功能,默认./configure会开启所有核心功能,可重新编译安装:
    ./configure --enable-shared
    make
    sudo make install
    sudo ldconfig
    

内容的提问来源于stack exchange,提问作者Jarrett GXZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:32:09