Undefined reference to `cc1_main` during linking time
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 624
- Forks
- 170
- PR merge metrics
- No merged PRs in 30d
Description
Hi,
First of all, super cool work. I watched your presentation at PACT and had to try this project out.
But I am running into an issue during compilation.
Error:
```
ninja check-mlir-clang
[1/2] Linking CXX executable mlir-clang/mlir-clang
FAILED: mlir-clang/mlir-clang
: && /usr/bin/clang++-10 -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -Wmisleading-indentation -fdiagnostics-color -g -Wl,-rpath-link, mlir-clang/CMakeFiles/mlir-clang.dir/__/llvm-project/clang/tools/driver/cc1_main.cpp.o mlir-clang/CMakeFiles/mlir-clang.dir/__/llvm-project/clang/tools/driver/cc1as_main.cpp.o mlir-clang/CMakeFiles/mlir-clang.dir/__/llvm-project/clang/tools/driver/cc1gen_reproducer_main.cpp.o mlir-clang/CMakeFiles/mlir-clang.dir/mlir-clang.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/utils.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/AffineUtils.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/pragmaHandler.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/ValueCategory.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/CGStmt.cc.o -o mlir-clang/mlir-clang -L/working_dir/llvm-project/build/./lib -Wl,-rpath,"\$ORIGIN/../lib:/working_dir/llvm-project/build/./lib" ../llvm-project/build/lib/libLLVMX86CodeGen.a ../llvm-project/build/lib/libLLVMX86AsmParser.a ../llvm-project/build/lib/libLLVMX86Desc.a ../llvm-project/build/lib/libLLVMX86Disassembler.a ../llvm-project/build/lib/libLLVMX86Info.a ../llvm-project/build/lib/libLLVMAnalysis.a ../llvm-project/build/lib/libLLVMCodeGen.a ../llvm-project/build/lib/libLLVMCore.a ../llvm-project/build/lib/libLLVMAggressiveInstCombine.a ../llvm-project/build/lib/libLLVMInstCombine.a ../llvm-project/build/lib/libLLVMInstrumentation.a ../llvm-project/build/lib/libLLVMMC.a ../llvm-project/build/lib/libLLVMMCParser.a ../llvm-project/build/lib/libLLVMObjCARCOpts.a ../llvm-project/build/lib/libLLVMOption.a ../llvm-project/build/lib/libLLVMScalarOpts.a ../llvm-project/build/lib/libLLVMSupport.a ../llvm-project/build/lib/libLLVMTransformUtils.a ../llvm-project/build/lib/libLLVMVectorize.a -lpthread ../llvm-project/build/lib/libMLIRSCFTransforms.a lib/polygeist/libMLIRPolygeist.a ../llvm-project/build/lib/libMLIRSupport.a ../llvm-project/build/lib/libMLIRIR.a ../llvm-project/build/lib/libMLIRAnalysis.a ../llvm-project/build/lib/libMLIRLLVMIR.a ../llvm-project/build/lib/libMLIRNVVMIR.a ../llvm-project/build/lib/libMLIROpenMP.a ../llvm-project/build/lib/libMLIRGPUOps.a ../llvm-project/build/lib/libMLIRTransforms.a ../llvm-project/build/lib/libMLIRSCFToStandard.a ../llvm-project/build/lib/libMLIRStandardToLLVM.a ../llvm-project/build/lib/libMLIRAffineTransforms.a ../llvm-project/build/lib/libMLIRAffineToStandard.a ../llvm-project/build/lib/libMLIRMathToLLVM.a ../llvm-project/build/lib/libMLIRTargetLLVMIRImport.a lib/polygeist/Passes/libMLIRPolygeistTransforms.a ../llvm-project/build/lib/libMLIRLLVMToLLVMIRTranslation.a ../llvm-project/build/lib/libMLIRSCFToOpenMP.a ../llvm-project/build/lib/libMLIROpenMPToLLVM.a ../llvm-project/build/lib/libMLIROpenMPToLLVMIRTranslation.a ../llvm-project/build/lib/libclangAST.a ../llvm-project/build/lib/libclangBasic.a ../llvm-project/build/lib/libclangCodeGen.a ../llvm-project/build/lib/libclangDriver.a ../llvm-project/build/lib/libclangFrontend.a ../llvm-project/build/lib/libclangFrontendTool.a ../llvm-project/build/lib/libclangLex.a ../llvm-project/build/lib/libclangSerialization.a ../llvm-project/build/lib/libLLVMAsmPrinter.a ../llvm-project/build/lib/libLLVMDebugInfoDWARF.a ../llvm-project/build/lib/libLLVMDebugInfoMSF.a ../llvm-project/build/lib/libLLVMGlobalISel.a ../llvm-project/build/lib/libLLVMSelectionDAG.a ../llvm-project/build/lib/libLLVMCFGuard.a ../llvm-project/build/lib/libLLVMMCDisassembler.a ../llvm-project/build/lib/libMLIRVectorToLLVM.a ../llvm-project/build/lib/libMLIRArmNeon.a ../llvm-project/build/lib/libMLIRArmSVETransforms.a ../llvm-project/build/lib/libMLIRArmSVE.a ../llvm-project/build/lib/libMLIRAMXTransforms.a ../llvm-project/build/lib/libMLIRAMX.a ../llvm-project/build/lib/libMLIRX86VectorTransforms.a ../llvm-project/build/lib/libMLIRX86Vector.a lib/polygeist/libMLIRPolygeist.a ../llvm-project/build/lib/libMLIRNVVMIR.a ../llvm-project/build/lib/libMLIRGPUOps.a ../llvm-project/build/lib/libMLIRDLTI.a ../llvm-project/build/lib/libMLIRSCFToStandard.a ../llvm-project/build/lib/libMLIRStandardOpsTransforms.a ../llvm-project/build/lib/libMLIRArithmeticTransforms.a ../llvm-project/build/lib/libMLIRStandardToLLVM.a ../llvm-project/build/lib/libMLIRArithmeticToLLVM.a ../llvm-project/build/lib/libMLIRMemRefToLLVM.a ../llvm-project/build/lib/libMLIRLLVMCommonConversion.a ../llvm-project/build/lib/libMLIRTransforms.a ../llvm-project/build/lib/libMLIRCopyOpInterface.a ../llvm-project/build/lib/libMLIRVector.a ../llvm-project/build/lib/libMLIRAffineUtils.a ../llvm-project/build/lib/libMLIRTransformUtils.a ../llvm-project/build/lib/libMLIRRewrite.a ../llvm-project/build/lib/libMLIRPDLToPDLInterp.a ../llvm-project/build/lib/libMLIRPDLInterp.a ../llvm-project/build/lib/libMLIRPDL.a ../llvm-project/build/lib/libMLIRLoopAnalysis.a ../llvm-project/build/lib/libMLIRPresburger.a ../llvm-project/build/lib/libMLIRLinalg.a
../llvm-project/build/lib/libMLIRAffine.a ../llvm-project/build/lib/libMLIRSCF.a ../llvm-project/build/lib/libMLIRMemRef.a ../llvm-project/build/lib/libMLIRMemRefUtils.a ../llvm-project/build/lib/libMLIRLoopLikeInterface.a ../llvm-project/build/lib/libMLIRTensor.a ../llvm-project/build/lib/libMLIRStandard.a ../llvm-project/build/lib/libMLIRArithmetic.a ../llvm-project/build/lib/libMLIRVectorInterfaces.a ../llvm-project/build/lib/libMLIRCastInterfaces.a ../llvm-project/build/lib/libMLIRMath.a ../llvm-project/build/lib/libMLIRDialect.a ../llvm-project/build/lib/libMLIRDialectUtils.a ../llvm-project/build/lib/libMLIRTilingInterface.a
../llvm-project/build/lib/libMLIROpenMP.a ../llvm-project/build/lib/libMLIRTargetLLVMIRExport.a ../llvm-project/build/lib/libMLIRTranslation.a ../llvm-project/build/lib/libMLIRParser.a ../llvm-project/build/lib/libMLIRLLVMIRTransforms.a ../llvm-project/build/lib/libMLIRLLVMIR.a ../llvm-project/build/lib/libMLIRPass.a ../llvm-project/build/lib/libMLIRAnalysis.a ../llvm-project/build/lib/libMLIRCallInterfaces.a ../llvm-project/build/lib/libMLIRControlFlowInterfaces.a ../llvm-project/build/lib/libMLIRDataLayoutInterfaces.a ../llvm-project/build/lib/libMLIRInferTypeOpInterface.a ../llvm-project/build/lib/libMLIRSideEffectInterfaces.a ../llvm-project/build/lib/libMLIRViewLikeInterface.a ../llvm-project/build/lib/libMLIRIR.a ../llvm-project/build/lib/libMLIRSupport.a ../llvm-project/build/lib/libclangCodeGen.a ../llvm-project/build/lib/libLLVMCoverage.a ../llvm-project/build/lib/libLLVMLTO.a ../llvm-project/build/lib/libLLVMCodeGen.a ../llvm-project/build/lib/libLLVMExtensions.a ../llvm-project/build/lib/libLLVMPasses.a ../llvm-project/build/lib/libLLVMObjCARCOpts.a ../llvm-project/build/lib/libLLVMTarget.a ../llvm-project/build/lib/libLLVMCoroutines.a ../llvm-project/build/lib/libLLVMipo.a ../llvm-project/build/lib/libLLVMInstrumentation.a ../llvm-project/build/lib/libLLVMVectorize.a ../llvm-project/build/lib/libLLVMBitWriter.a ../llvm-project/build/lib/libLLVMIRReader.a ../llvm-project/build/lib/libLLVMAsmParser.a ../llvm-project/build/lib/libLLVMLinker.a ../llvm-project/build/lib/libclangRewriteFrontend.a ../llvm-project/build/lib/libclangARCMigrate.a ../llvm-project/build/lib/libclangStaticAnalyzerFrontend.a ../llvm-project/build/lib/libclangStaticAnalyzerCheckers.a ../llvm-project/build/lib/libclangStaticAnalyzerCore.a ../llvm-project/build/lib/libclangCrossTU.a ../llvm-project/build/lib/libclangIndex.a ../llvm-project/build/lib/libclangFrontend.a ../llvm-project/build/lib/libclangDriver.a
../llvm-project/build/lib/libLLVMOption.a ../llvm-project/build/lib/libclangParse.a ../llvm-project/build/lib/libclangSerialization.a ../llvm-project/build/lib/libclangSema.a ../llvm-project/build/lib/libclangAnalysis.a ../llvm-project/build/lib/libclangASTMatchers.a ../llvm-project/build/lib/libclangEdit.a ../llvm-project/build/lib/libclangAST.a ../llvm-project/build/lib/libLLVMFrontendOpenMP.a ../llvm-project/build/lib/libLLVMScalarOpts.a ../llvm-project/build/lib/libLLVMAggressiveInstCombine.a ../llvm-project/build/lib/libLLVMInstCombine.a ../llvm-project/build/lib/libLLVMTransformUtils.a ../llvm-project/build/lib/libLLVMAnalysis.a ../llvm-project/build/lib/libLLVMProfileData.a ../llvm-project/build/lib/libLLVMObject.a ../llvm-project/build/lib/libLLVMMCParser.a ../llvm-project/build/lib/libLLVMMC.a ../llvm-project/build/lib/libLLVMDebugInfoCodeView.a ../llvm-project/build/lib/libLLVMBitReader.a ../llvm-project/build/lib/libLLVMTextAPI.a ../llvm-project/build/lib/libLLVMCore.a ../llvm-project/build/lib/libLLVMBinaryFormat.a ../llvm-project/build/lib/libLLVMRemarks.a ../llvm-project/build/lib/libLLVMBitstreamReader.a ../llvm-project/build/lib/libclangFormat.a ../llvm-project/build/lib/libclangToolingInclusions.a ../llvm-project/build/lib/libclangToolingCore.a ../llvm-project/build/lib/libclangRewrite.a ../llvm-project/build/lib/libclangLex.a ../llvm-project/build/lib/libclangBasic.a ../llvm-project/build/lib/libLLVMSupport.a -lrt -ldl -lpthread -lm /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libtinfo.so ../llvm-project/build/lib/libLLVMDemangle.a && :
/usr/bin/ld: mlir-clang/CMakeFiles/mlir-clang.dir/mlir-clang.cc.o: in function `ExecuteCC1Tool(llvm::SmallVectorImpl&)':
/working_dir/build/../mlir-clang/mlir-clang.cc:182: undefined reference to `cc1_main(llvm::ArrayRef, char const*, void*)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
```
When?
While following the Readme instructions for option 1, building llvm and polygeist code with two cmake commands.
System:
I have a build image clang-10, gcc-9, cmake, ninja installed. I used clang-10 to compile llvm without problems, but it fails with the error above during the final linking steps of `ninja check-mlir-clang`
Questions?
External `cc1_main` seem to be included from the llvm-project. Maybe there is a library inclusion missing in the `mlir-clang`'s `CMakeLists` file during polygeist compilation? Or maybe there is something missing in my system.
Have you seen this error before?
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the failure with the README's option 1 build and `ninja check-mlir-clang`; start at `mlir-clang/mlir-clang.cc` line 182 and inspect the `mlir-clang` CMake configuration. Determine why `cc1_main` is unresolved during linking, then verify that the `mlir-clang` target links successfully and the check completes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, cpp
- Domain
- build-system, compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100