C语言编译遇symbol not found错误,请求排查解决
解决C语言链接错误:Undefined symbols "_print_sort_debug"
问题原因
链接器报错的核心是函数声明与实现的名称不匹配:
util.h中声明的调试函数名为print_sort_debugutil.c里实际写的函数名为debug_printmerge_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"); }
验证步骤
- 保存修改后的
util.c - 执行
make clean清理旧的目标文件 - 重新运行
make,链接阶段将正常完成,成功生成build/pjs可执行文件
内容的提问来源于stack exchange,提问作者Phandal
相关产品推荐
相关产品推荐

