使用 MinGW-w64 构建 LLVM 时未定义的引用
Undefined references while building LLVM with MinGW-w64
我正在尝试使用 MinGW-w64 (GCC 8.1.0) 构建 LLVM。在 cmake .. -G"Mingw Makefiles"
和 mingw32-make
之后它开始构建,但过了一会儿这个错误发生了:
<...>
[ 5%] Building CXX object utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/CTagsEmitter.cpp.obj
[ 5%] Built target obj.llvm-tblgen
[ 5%] Linking CXX executable ..\..\bin\llvm-tblgen.exe
../../lib/libLLVMSupport.a(Threading.cpp.obj): In function `IterateProcInfo<getProcessorGroups()::<lambda()>::<lambda(SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX*)> >':
C:/.../llvm-12.0.0.src/lib/Support/Windows/Threading.inc:143: undefined reference to `_imp__GetLogicalProcessorInformationEx@12'
C:/.../llvm-12.0.0.src/lib/Support/Windows/Threading.inc:148: undefined reference to `_imp__GetLogicalProcessorInformationEx@12'
C:/.../llvm-12.0.0.src/lib/Support/Windows/Threading.inc:143: undefined reference to `_imp__GetLogicalProcessorInformationEx@12'
C:/.../llvm-12.0.0.src/lib/Support/Windows/Threading.inc:148: undefined reference to `_imp__GetLogicalProcessorInformationEx@12'
collect2.exe: error: ld returned 1 exit status
mingw32-make[2]: *** [utils\TableGen\CMakeFiles\llvm-tblgen.dir\build.make:192: bin/llvm-tblgen.exe] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:9445: utils/TableGen/CMakeFiles/llvm-tblgen.dir/all] Error 2
mingw32-make: *** [Makefile:155: all] Error 2
我猜这个错误是 link 用 this question 编辑的,is/are 缺少一些库,使用 -D"CMAKE_CXX_FLAGS=-l..."
添加这些库会修复错误。但是那些库是什么?我在 5% 处收到错误,可能需要更多的库 link(而且 5% 已经花了很长时间,所以我不想等到 50% 才发现有一个错误)。
那么,link LLVM 需要哪些库?
-DCMAKE_CXX_FLAGS=
用于编译器标志,而不是链接器标志。
尝试这样的事情:-DCMAKE_EXE_LINKER_FLAGS="-Wl,--as-needed -lkernel32"
.
我正在尝试使用 MinGW-w64 (GCC 8.1.0) 构建 LLVM。在 cmake .. -G"Mingw Makefiles"
和 mingw32-make
之后它开始构建,但过了一会儿这个错误发生了:
<...>
[ 5%] Building CXX object utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/CTagsEmitter.cpp.obj
[ 5%] Built target obj.llvm-tblgen
[ 5%] Linking CXX executable ..\..\bin\llvm-tblgen.exe
../../lib/libLLVMSupport.a(Threading.cpp.obj): In function `IterateProcInfo<getProcessorGroups()::<lambda()>::<lambda(SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX*)> >':
C:/.../llvm-12.0.0.src/lib/Support/Windows/Threading.inc:143: undefined reference to `_imp__GetLogicalProcessorInformationEx@12'
C:/.../llvm-12.0.0.src/lib/Support/Windows/Threading.inc:148: undefined reference to `_imp__GetLogicalProcessorInformationEx@12'
C:/.../llvm-12.0.0.src/lib/Support/Windows/Threading.inc:143: undefined reference to `_imp__GetLogicalProcessorInformationEx@12'
C:/.../llvm-12.0.0.src/lib/Support/Windows/Threading.inc:148: undefined reference to `_imp__GetLogicalProcessorInformationEx@12'
collect2.exe: error: ld returned 1 exit status
mingw32-make[2]: *** [utils\TableGen\CMakeFiles\llvm-tblgen.dir\build.make:192: bin/llvm-tblgen.exe] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:9445: utils/TableGen/CMakeFiles/llvm-tblgen.dir/all] Error 2
mingw32-make: *** [Makefile:155: all] Error 2
我猜这个错误是 link 用 this question 编辑的,is/are 缺少一些库,使用 -D"CMAKE_CXX_FLAGS=-l..."
添加这些库会修复错误。但是那些库是什么?我在 5% 处收到错误,可能需要更多的库 link(而且 5% 已经花了很长时间,所以我不想等到 50% 才发现有一个错误)。
那么,link LLVM 需要哪些库?
-DCMAKE_CXX_FLAGS=
用于编译器标志,而不是链接器标志。
尝试这样的事情:-DCMAKE_EXE_LINKER_FLAGS="-Wl,--as-needed -lkernel32"
.