gcc/mpicc 编译器 undefined reference to ... 问题的解决

描述

我的代码中使用了libcstl库,在代码中声明:

#include <cstl/cmap.h>

可是出现这个问题,无法识别libcstl库里调用的函数,如下图:

猜想

  1. #include <cstl/cmap.h>这句话不报错说明库已经装好,环境变量也没有问题。
  2. 可能是链接时的错误。

解决

查看Makefile文件发现忘记添加cstl的链接库了。

-lcstl

原来的代码是:

mpicc -c main.c -std=c99 -lstdc++ -fopenmp -lm -o main.o

应该改为:

mpicc -c main.c -std=c99 -lcstl -lstdc++ -fopenmp -lm -o main.o

如上图,改好之后就解决了!