Makefile指定包含路径仍找不到BLIS的blis.h头文件
问题描述
- 在MSYS2 MINGW64环境中,已将BLIS框架安装到
$HOME/blis路径,官方测试示例可正常编译 - 在其他目录使用自定义Makefile编译代码时,编译器处理
#include "blis.h"时提示找不到文件 - 已确认
blis.h位于C:\msys64\home\[USERPROFILE]\blis\include\haswell\,且$HOME/blis指向正确路径
解决方案
问题出在自定义Makefile未指定BLIS的头文件搜索路径和库链接参数,修正方式如下:
- 在
CFLAGS中添加头文件搜索路径:-I$(HOME)/blis/include/haswell(因blis.h位于haswell子目录) - 在
LDFLAGS中添加库文件搜索路径和BLIS库链接:-L$(HOME)/blis/lib/haswell -lblis
相关文件内容
安装命令
git clone https://github.com/flame/blis.git cd blis ./configure --prefix=$HOME/blis --enable-cblas haswell make -j$(nproc) make install
错误版本Makefile
CC = gcc CFLAGS = -O3 LDFLAGS = TARGET = my_blis_test SRC = test.c $(TARGET): $(SRC) $(CC) $(CFLAGS) $(LDFLAGS) -o $(TARGET) $(SRC)
修正后Makefile
CC = gcc CFLAGS = -O3 -I$(HOME)/blis/include/haswell LDFLAGS = -L$(HOME)/blis/lib/haswell -lblis TARGET = my_blis_test SRC = test.c $(TARGET): $(SRC) $(CC) $(CFLAGS) $(LDFLAGS) -o $(TARGET) $(SRC)
编译器错误信息
test.c:1:10: fatal error: blis.h: No such file or directory 1 | #include "blis.h" | ^~~~~~~~ compilation terminated.
测试源代码(test.c)
#include "blis.h" #include <stdio.h> int main() { double a = 2.0, b = 3.0, c; c = bli_dadd(a, b); printf("a + b = %lf\n", c); return 0; }
内容的提问来源于stack exchange,提问作者hillard28
相关产品推荐
相关产品推荐

