[Qt-creator] Linker probably picks up wrong LLVM libraries when linking Qt Creator 4.9
Andrzej Telszewski
atelszewski at gmail.com
Tue May 28 07:38:20 CEST 2019
Hi,
I came across a problem, when the linker probably picks up wrong
libraries when linking Qt Creator 4.9.
Instead of picking from LLVM_INSTALL_DIR, it picks the libs from
system-wide installed LLVM (i.e. from /usr/lib64).
This is the way I compile LLVM:
(The version I use is 7.0 commit 4a75f114)
mkdir -p build
cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/libexec/qtcreator/clang \
-DLLVM_LIBDIR_SUFFIX= \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_RTTI=ON \
..
make
make install
And this is the way I try to compile Qt Creator:
qmake-qt5 qtcreator.pro \
QTC_PREFIX=/usr \
IDE_LIBRARY_BASENAME=lib64 \
LLVM_INSTALL_DIR=/usr/libexec/qtcreator/clang \
QBS_INSTALL_DIR=/usr \
DEFINES+=QBS_ENABLE_PROJECT_FILE_UPDATES
make
And it fails with the following messages (excerpt from the full log):
(...)
.obj/release-shared/clangformatutils.o: In function
`ClangFormat::constructStyle(QByteArray const&)':
clangformatutils.cpp:(.text._ZN11ClangFormatL14constructStyleERK10QByteArray+0xc4):
undefined reference to `clang::format::getStyle(llvm::StringRef,
llvm::StringRef, llvm::StringRef, llvm::StringRef, clang::vfs::FileSystem*)'
.obj/release-shared/clangformatutils.o: In function
`ClangFormat::styleForFile(Utils::FileName, bool)':
clangformatutils.cpp:(.text._ZN11ClangFormatL12styleForFileEN5Utils8FileNameEb+0x213):
undefined reference to `clang::format::getStyle(llvm::StringRef,
llvm::StringRef, llvm::StringRef, llvm::StringRef, clang::vfs::FileSystem*)'
.obj/release-shared/clangformatutils.o:(.data.rel._ZN4llvm30VerifyDisableABIBreakingChecksE+0x0):
undefined reference to `llvm::DisableABIBreakingChecks'
collect2: error: ld returned 1 exit status
Makefile:112: recipe for target
'../../../lib64/qtcreator/plugins/libClangFormat.so' failed
make[3]: *** [../../../lib64/qtcreator/plugins/libClangFormat.so] Error 1
make[3]: Leaving directory
'/tmp/slackrepo-desktop/slackrepo.47ixcS/build_qt-creator/qt-creator-4.9.0/src/plugins/clangformat'
Makefile:142: recipe for target 'sub-clangformat-make_first' failed
make[2]: *** [sub-clangformat-make_first] Error 2
make[2]: *** Waiting for unfinished jobs....
(...)
Maybe the problem lies in this line:
g++ -L/usr/lib64 -Wl,-z,origin
'-Wl,-rpath,$ORIGIN:$ORIGIN/..:$ORIGIN/../lib64/qtcreator'
-Wl,--no-undefined -Wl,-z,origin
-Wl,-rpath,/usr/libexec/qtcreator/clang/lib -Wl,--exclude-libs,ALL
-Wl,-O1 -shared -Wl,-soname,libClangFormat.so -o libClangFormat.so
.obj/release-shared/clangformatbaseindenter.o
.obj/release-shared/clangformatconfigwidget.o
.obj/release-shared/clangformatindenter.o
.obj/release-shared/clangformatplugin.o
.obj/release-shared/clangformatsettings.o
.obj/release-shared/clangformatutils.o
.obj/release-shared/moc_clangformatconfigwidget.o
.obj/release-shared/moc_clangformatplugin.o
-L/tmp/slackrepo-desktop/slackrepo.47ixcS/build_qt-creator/qt-creator-4.9.0/lib64/qtcreator
-L/tmp/slackrepo-desktop/slackrepo.47ixcS/build_qt-creator/qt-creator-4.9.0/lib64/qtcreator/plugins
-lCppTools -lProjectExplorer -lCppEditor -lCore -lTextEditor -lQtcSsh
-lCPlusPlus -lAggregation -lExtensionSystem -lUtils
-lKSyntaxHighlighting -L/usr/libexec/qtcreator/clang/lib -lclangFormat
-lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangLex
-lclangBasic -lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMSymbolize
-lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMMIRParser -lLLVMFuzzMutate
-lLLVMCoverage -lLLVMTableGen -lLLVMDlltoolDriver -lLLVMOrcJIT
-lLLVMXCoreDisassembler -lLLVMXCoreCodeGen -lLLVMXCoreDesc
-lLLVMXCoreInfo -lLLVMXCoreAsmPrinter -lLLVMSystemZDisassembler
-lLLVMSystemZCodeGen -lLLVMSystemZAsmParser -lLLVMSystemZDesc
-lLLVMSystemZInfo -lLLVMSystemZAsmPrinter -lLLVMSparcDisassembler
-lLLVMSparcCodeGen -lLLVMSparcAsmParser -lLLVMSparcDesc -lLLVMSparcInfo
-lLLVMSparcAsmPrinter -lLLVMPowerPCDisassembler -lLLVMPowerPCCodeGen
-lLLVMPowerPCAsmParser -lLLVMPowerPCDesc -lLLVMPowerPCInfo
-lLLVMPowerPCAsmPrinter -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc
-lLLVMNVPTXInfo -lLLVMNVPTXAsmPrinter -lLLVMMSP430CodeGen
-lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMSP430AsmPrinter
-lLLVMMipsDisassembler -lLLVMMipsCodeGen -lLLVMMipsAsmParser
-lLLVMMipsDesc -lLLVMMipsInfo -lLLVMMipsAsmPrinter
-lLLVMLanaiDisassembler -lLLVMLanaiCodeGen -lLLVMLanaiAsmParser
-lLLVMLanaiDesc -lLLVMLanaiAsmPrinter -lLLVMLanaiInfo
-lLLVMHexagonDisassembler -lLLVMHexagonCodeGen -lLLVMHexagonAsmParser
-lLLVMHexagonDesc -lLLVMHexagonInfo -lLLVMBPFDisassembler
-lLLVMBPFCodeGen -lLLVMBPFAsmParser -lLLVMBPFDesc -lLLVMBPFInfo
-lLLVMBPFAsmPrinter -lLLVMARMDisassembler -lLLVMARMCodeGen
-lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMAsmPrinter
-lLLVMARMUtils -lLLVMAMDGPUDisassembler -lLLVMAMDGPUCodeGen
-lLLVMAMDGPUAsmParser -lLLVMAMDGPUDesc -lLLVMAMDGPUInfo
-lLLVMAMDGPUAsmPrinter -lLLVMAMDGPUUtils -lLLVMAArch64Disassembler
-lLLVMAArch64CodeGen -lLLVMAArch64AsmParser -lLLVMAArch64Desc
-lLLVMAArch64Info -lLLVMAArch64AsmPrinter -lLLVMAArch64Utils
-lLLVMObjectYAML -lLLVMLibDriver -lLLVMOption -lLLVMWindowsManifest
-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen
-lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMX86Desc
-lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils
-lLLVMMCJIT -lLLVMLineEditor -lLLVMInterpreter -lLLVMExecutionEngine
-lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMCoroutines -lLLVMipo
-lLLVMInstrumentation -lLLVMVectorize -lLLVMScalarOpts -lLLVMLinker
-lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMBitWriter
-lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMAnalysis
-lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC
-lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBitReader -lLLVMCore
-lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle -lz -lrt -ldl -lcurses
-lm -lxml2 -lQt5Widgets -lQt5Gui -lQt5Concurrent -lQt5Network -lQt5Core
-lGL -lpthread
where:
-L/usr/lib64
is put before:
-Wl,-rpath,/usr/libexec/qtcreator/clang/lib
?
Uninstalling this system-wide version of LLVM for the time of building
Qt Creator allows it to compile and link just fine.
Please advice.
Patches welcome :-)
Thanks in advance!
--
Best regards,
Andrzej Telszewski
More information about the Qt-creator
mailing list