Встречайте проблему компиляции llvm-config с помощью clang при следовании учебнику по llvm

я сейчас учусьllvmдля курсовой работы в школе. Я следовал официальному руководству llvm и столкнулся с проблемой при завершении персонажа 3 (ссылка: https://releases.llvm.org/15.0.0/docs/tutorial/MyFirstLanguageFrontend/LangImpl03.html).

Ниже моя среда:

      Windows 10 with AMD R5800H
clang version 16.0.0
LLVM version 16.0.0 
CMake version 3.25.0
clang and LLVM were built by source code from GitHub using CMake and VS-2022

Вот файлы, которые я включаю в свою программу .cc:

      #include "llvm/ADT/APFloat.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Verifier.h"
#include <algorithm>
#include <cctype>
#include <cstdio>
#include <cstdlib>
#include <map>
#include <memory>
#include <string>
#include <vector>

Мы видим, что первые несколько строк включают заголовочные файлы llvm.

Когда я закончил программировать, я попытался скомпилировать приведенный ниже оператор PowerShell (PS. Я не знаю, что означает каждая часть, просто следуя руководству):

      clang++ -g -O3 my-lang.cc `llvm-config --cxxflags --ldflags --system-libs --libs core` -o mylang

Но Shell выводит следующую информацию:

      clang: error: unsupported option '--cxxflags'
clang: error: unsupported option '--ldflags'
clang: error: unsupported option '--system-libs'
clang: error: unsupported option '--libs'
clang: error: no such file or directory: 'llvm-config'
clang: error: no such file or directory: 'core -o'
clang: error: no such file or directory: 'mylang'

Очевидно, что что-то не так с моим clang и/или llvm-config, но решить их мне не удалось.

  • Первый способ, который я пробовал, это переустановить clang и llvm на свой компьютер, хотя смысла в этом явно не было.
  • Затем я попытался запустить инструкцию в командной строке (CMD). Но у него есть другой похожий, но другой выход.
      clang: error: unsupported option '--cxxflags'
clang: error: unsupported option '--ldflags'
clang: error: unsupported option '--system-libs'
clang: error: unsupported option '--libs'
clang: error: no such file or directory: '`llvm-config'
clang: error: no such file or directory: 'core`'
  • После этого я проверил, может ли он работать отдельно для clang и llvm-config.

я только делаюllvm-config --cxxflags --ldflags --system-libs --libs coreи получить вещи ниже:

      -IE:\CDemo\llvm\llvm-project\llvm\include -IE:\CDemo\llvm\llvm-project\build\include -std:c++17   /EHs-c- /GR- -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -DUNICODE -D_UNICODE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
-LIBPATH:E:\CDemo\llvm\llvm-project\build\Release\lib
E:\CDemo\llvm\llvm-project\build\Release\lib\LLVMCore.lib E:\CDemo\llvm\llvm-project\build\Release\lib\LLVMRemarks.lib E:\CDemo\llvm\llvm-project\build\Release\lib\LLVMBitstreamReader.lib E:\CDemo\llvm\llvm-project\build\Release\lib\LLVMBinaryFormat.lib E:\CDemo\llvm\llvm-project\build\Release\lib\LLVMSupport.lib E:\CDemo\llvm\llvm-project\build\Release\lib\LLVMDemangle.lib
psapi.lib shell32.lib ole32.lib uuid.lib advapi32.lib

И делайclang++ my-lang.cc -o mylangи получить вещи ниже:

      my-lang.cc:1:10: fatal error: 'llvm/ADT/APFloat.h' file not found
#include "llvm/ADT/APFloat.h"
         ^~~~~~~~~~~~~~~~~~~~
1 error generated.

Я думаю, что это файлы, которые мне нужно связать в моей программе, и это также доказывает, чтоllvm-configможет работает нормально.

Но почему clang и llvm-config не могут нормально работать вместе?

Как я могу скомпилировать свою программу?

==========

дата редактирования: 2022/12/2

Ага. Я пытался$()и это сработало. Но возникла новая ошибка. Когда я делаю заявлениеclang++ -g -O3 my-lang.cc $(llvm-config --cxxflags --ldflags --system-libs --libs core) -o mylangв Power Shell было сказано:

      clang++: error: no such file or directory: 'E:\CDemo\llvm\llvm-project\build\Release\lib\LLVMCore.lib E:\CDemo\llvm\llvm-project\build\Release\lib\LLVMRemarks.lib E:\CDemo\llvm\llvm-project\build\Release\lib\LLVMBitstreamReader.lib E:\CDemo\llvm\llvm-project\build\Release\lib\LLVMBinaryFormat.lib E:\CDemo\llvm\llvm-project\build\Release\lib\LLVMSupport.lib E:\CDemo\llvm\llvm-project\build\Release\lib\LLVMDemangle.lib'
clang++: error: no such file or directory: 'psapi.lib shell32.lib ole32.lib uuid.lib advapi32.lib'

Первый момент, который меня действительно смущает, заключается в том, что эти файлы существуют на моем компьютере и находятся на правильном пути.

      PS E:\CDemo\llvm\llvm-project\build\Release\lib> dir
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
...
-a----         2022/12/1     22:59       19281400 LLVMCore.lib
-a----         2022/12/1     22:58        1184306 LLVMRemarks.lib
-a----         2022/12/1     22:56         240648 LLVMBitstreamReader.lib
-a----         2022/12/1     22:56         887888 LLVMBinaryFormat.lib
-a----         2022/12/1     22:56       11201768 LLVMSupport.lib
-a----         2022/12/1     22:56         862826 LLVMDemangle.lib
...

Во-вторых, что это означаетpsapi.lib shell32.lib ole32.lib uuid.lib advapi32.libи где я могу их найти?

0 ответов

Другие вопросы по тегам