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

C语言编译遇symbol not found错误,请求排查解决

解决C语言链接错误:Undefined symbols "_print_sort_debug"

问题原因

链接器报错的核心是函数声明与实现的名称不匹配:

  • util.h中声明的调试函数名为print_sort_debug
  • util.c里实际写的函数名为debug_print
  • merge_sort.c中调用的是print_sort_debug,链接时找不到对应实现,因此抛出符号未定义错误

解决方案

统一函数名称即可,推荐修改util.c的函数实现名称,对齐头文件声明:

修改util.c中的debug_print函数名为print_sort_debug,修改后代码如下:

#include <stdio.h>

#include "util.h"

void print_arr(double *arr, int arr_size) {
  int x;
  for (x = 0; x < arr_size; x++){
    printf("%.2f\n", arr[x]);
  }
}

// 函数名改为print_sort_debug,与头文件声明一致
void print_sort_debug(double *arr, int l_size, int r_size, double *left, double *right, int l, int m, int r, int arr_size) {
  printf("-------------Left\n");
  print_arr(left, l_size);
  printf("-------------Right\n");
  print_arr(right, r_size);
  printf("-------------Arr\n");
  print_arr(arr, arr_size);
  printf("l: %i\n", l);
  printf("m: %i\n", m);
  printf("r: %i\n", r);
  printf("l_size: %i\n", l_size);
  printf("r_size: %i\n", r_size);
  printf("-------------Done\n");
}

验证步骤

  1. 保存修改后的util.c
  2. 执行make clean清理旧的目标文件
  3. 重新运行make,链接阶段将正常完成,成功生成build/pjs可执行文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:45:56