找不到G ++库

问题描述 投票:0回答:1

我正在尝试编译我制作的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

enter image description here

enter image description here

c++ makefile compiler-errors g++
1个回答
1
投票

请更新您的问题,而不是在其他网站上指责他人。

首先,即使在Windows上,也绝不能在makefile中使用反斜杠(Windows上有例外,但这种情况很少见)。始终使用正斜杠作为目录分隔符。

第二,您定义了变量TBB_INCLUDE_PATHTBB_LIBRARY_PATH,但是您从不使用它们。仅提及变量的name并不使用该变量。您必须将其包含在$(...)中才能使用,例如$(TBB_INCLUDE_PATH)

最后,所有公共链接器都是单遍链接器,这意味着将库和目标文件放在链接线上的order非常重要。您应该始终将目标文件first和库文件[[last放进去。如果您有多个库,则它们出现的顺序也很重要。您的链接行应如下所示:

pps: avl.o main.o parPlaneSweep.o $(CPLUSPLUS) -I$(TBB_INCLUDE_PATH) -L$(TBB_LIBRARY_PATH) $(OPTFLAGS) -o $@ $^ -ltbb
如果您想了解$@$^的含义,则可以阅读有关automatic variables的信息。
© www.soinside.com 2019 - 2024. All rights reserved.