【发布时间】:2020-04-16 18:56:37
【问题描述】:
我正在尝试编译我制作的 TBB 和 OpenMp 比较程序。它使用默认的 Visual Studio 编译器编译得很好。所以,我知道 TBB 安装正确。但是,我想改用 g++。我创建了一个 Makefile,从我读到的内容中需要 -ltbb 标志。
我的错误是,“c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: 找不到-ltbb”。
在确保我将所有内容正确链接并仍在努力学习方面,我不是专家。
这是我当前的 Makefile
CPLUSPLUS = g++
OPTFLAGS = -O3
TBB_INCLUDE_PATH = C:\tbb-2020.1-win\tbb\include
TBB_LIBRARY_PATH = C:\tbb\tbb\lib\intel64\vc14
all: pps
pps: avl.o main.o parPlaneSweep.o
$(CPLUSPLUS) -I$(TBB_INCLUDE_PATH) -L$(TBB_LIBRARY_PATH) $(OPTFLAGS) -o $@ $^ -ltbb
avl.o: avl.h avl.c
$(CC) -c $(OPTFLAGS) -fPIC avl.c
main.o: main.cpp parPlaneSweep.h
$(CPLUSPLUS) -c $(OPTFLAGS) -fopenmp main.cpp
parPlaneSweep.o: parPlaneSweep.h parPlaneSweep.cpp
$(CPLUSPLUS) -c $(OPTFLAGS) -fPIC -fopenmp parPlaneSweep.cpp
clean:
rm *.o
rm pps
【问题讨论】:
-
CPLUSPLUS = g++ -ITBB_INCLUDE_PATH -LTBB_LIBRARY_PATH不是一个好主意。我会将-ITBB_INCLUDE_PATH和-LTBB_LIBRARY_PATH放在使用它们的规则中,而不是将它们放入通常用于命名编译器的变量中。这会将太多的责任集中到一个地方,也可能导致您的错误。 -
您不会将库 (
-ltbb) 添加到编译行(-c创建目标文件的行)中。库仅添加在链接行中。 -
@user4581301 谢谢你们的帮助,我已经用你们的建议更新了我的makefile,但我仍然遇到同样的错误。 codepile.net/pile/lDwJ445v
标签: c++ makefile compiler-errors g++