首页 > 解决方案 > 是否可以在 gcc/g++ 中强制链接器错误?

问题描述

考虑下一个 C/C++ 代码:

//Main.c 

#include <stdio.h>
#include "mkl_cblas.h"

int tfuuuuuuuuuuuuuu()
{
   int Num = 10;
   double A[30] = {0.0};
   double B[30] = {0.0};
   double C[9];
   cblas_dgemm(CblasRowMajor, CblasTrans, CblasNoTrans, 3, 3, Num, 1.0, A, 3, B, 3, 0.0, C, 3);
   return 0;  

}

在 DLL 项目中的 MSVC 2015 (x64 Win7) 中构建它会导致链接器错误:

unresolved external symbol cblas_dgemm referenced in function tfuuuuuuuuuuuu

应该是因为我没有链接到 blas 库。

但是在 gcc (8.2.0, Centos7) 中构建相同的代码

$ gcc -c -fPIC -I./include -o Main.o Main.c

$ gcc -shared -o libTest.so Main.o

没有给出任何链接错误!

  1. 为什么即使我没有链接到所需的库,我也没有收到链接器错误?

  2. 在这种情况下是否有链接器选项来强制链接器错误?

标签: c++cgccg++

解决方案


推荐阅读