Skip to content

Unable to make Release build of zig on Arch Linux #2340

@winksaville

Description

@winksaville

On my Arch Linux system:

$ uname -a
Linux wink-desktop 5.0.7-arch1-1-ARCH #1 SMP PREEMPT Mon Apr 8 10:37:08 UTC 2019 x86_64 GNU/Linux
wink@wink-desktop:~/prgs/ziglang/zig2 (master)
$ gcc --version
gcc (GCC) 8.2.1 20181127
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Building the Release version of zig fails:

wink@wink-desktop:~/prgs/ziglang/zig2/build
$ rm -rf * .ninja_*
wink@wink-desktop:~/prgs/ziglang/zig2/build
$ cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release
-- The C compiler identification is GNU 8.2.1
-- The CXX compiler identification is GNU 8.2.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Configuring zig version 0.4.0+0f8fc3b9
-- Found LLVM: /usr/lib/libLLVMFuzzMutate.a;/usr/lib/libLLVMTableGen.a;/usr/lib/libLLVMLibDriver.a;/usr/lib/libLLVMDlltoolDriver.a;/usr/lib/libLLVMOption.a;/usr/lib/libLLVMXRay.a;/usr/lib/libLLVMLTO.a;/usr/lib/libLLVMPasses.a;/usr/lib/libLLVMObjCARCOpts.a;/usr/lib/libLLVMCoroutines.a;/usr/lib/libLLVMTextAPI.a;/usr/lib/libLLVMWindowsManifest.a;/usr/lib/libLLVMInterpreter.a;/usr/lib/libLLVMOptRemarks.a;/usr/lib/libLLVMMIRParser.a;/usr/lib/libLLVMObjectYAML.a;/usr/lib/libLLVMMCA.a;/usr/lib/libLLVMXCoreDisassembler.a;/usr/lib/libLLVMXCoreCodeGen.a;/usr/lib/libLLVMXCoreDesc.a;/usr/lib/libLLVMXCoreInfo.a;/usr/lib/libLLVMXCoreAsmPrinter.a;/usr/lib/libLLVMWebAssemblyDisassembler.a;/usr/lib/libLLVMWebAssemblyCodeGen.a;/usr/lib/libLLVMWebAssemblyDesc.a;/usr/lib/libLLVMWebAssemblyAsmPrinter.a;/usr/lib/libLLVMWebAssemblyAsmParser.a;/usr/lib/libLLVMWebAssemblyInfo.a;/usr/lib/libLLVMSystemZDisassembler.a;/usr/lib/libLLVMSystemZCodeGen.a;/usr/lib/libLLVMSystemZAsmParser.a;/usr/lib/libLLVMSystemZDesc.a;/usr/lib/libLLVMSystemZInfo.a;/usr/lib/libLLVMSystemZAsmPrinter.a;/usr/lib/libLLVMSparcDisassembler.a;/usr/lib/libLLVMSparcCodeGen.a;/usr/lib/libLLVMSparcAsmParser.a;/usr/lib/libLLVMSparcDesc.a;/usr/lib/libLLVMSparcInfo.a;/usr/lib/libLLVMSparcAsmPrinter.a;/usr/lib/libLLVMPowerPCDisassembler.a;/usr/lib/libLLVMPowerPCCodeGen.a;/usr/lib/libLLVMPowerPCAsmParser.a;/usr/lib/libLLVMPowerPCDesc.a;/usr/lib/libLLVMPowerPCInfo.a;/usr/lib/libLLVMPowerPCAsmPrinter.a;/usr/lib/libLLVMNVPTXCodeGen.a;/usr/lib/libLLVMNVPTXDesc.a;/usr/lib/libLLVMNVPTXInfo.a;/usr/lib/libLLVMNVPTXAsmPrinter.a;/usr/lib/libLLVMMSP430Disassembler.a;/usr/lib/libLLVMMSP430CodeGen.a;/usr/lib/libLLVMMSP430AsmParser.a;/usr/lib/libLLVMMSP430Desc.a;/usr/lib/libLLVMMSP430Info.a;/usr/lib/libLLVMMSP430AsmPrinter.a;/usr/lib/libLLVMMipsDisassembler.a;/usr/lib/libLLVMMipsCodeGen.a;/usr/lib/libLLVMMipsAsmParser.a;/usr/lib/libLLVMMipsDesc.a;/usr/lib/libLLVMMipsInfo.a;/usr/lib/libLLVMMipsAsmPrinter.a;/usr/lib/libLLVMLanaiDisassembler.a;/usr/lib/libLLVMLanaiCodeGen.a;/usr/lib/libLLVMLanaiAsmParser.a;/usr/lib/libLLVMLanaiDesc.a;/usr/lib/libLLVMLanaiAsmPrinter.a;/usr/lib/libLLVMLanaiInfo.a;/usr/lib/libLLVMHexagonDisassembler.a;/usr/lib/libLLVMHexagonCodeGen.a;/usr/lib/libLLVMHexagonAsmParser.a;/usr/lib/libLLVMHexagonDesc.a;/usr/lib/libLLVMHexagonInfo.a;/usr/lib/libLLVMBPFDisassembler.a;/usr/lib/libLLVMBPFCodeGen.a;/usr/lib/libLLVMBPFAsmParser.a;/usr/lib/libLLVMBPFDesc.a;/usr/lib/libLLVMBPFInfo.a;/usr/lib/libLLVMBPFAsmPrinter.a;/usr/lib/libLLVMARMDisassembler.a;/usr/lib/libLLVMARMCodeGen.a;/usr/lib/libLLVMARMAsmParser.a;/usr/lib/libLLVMARMDesc.a;/usr/lib/libLLVMARMInfo.a;/usr/lib/libLLVMARMAsmPrinter.a;/usr/lib/libLLVMARMUtils.a;/usr/lib/libLLVMAMDGPUDisassembler.a;/usr/lib/libLLVMAMDGPUCodeGen.a;/usr/lib/libLLVMipo.a;/usr/lib/libLLVMInstrumentation.a;/usr/lib/libLLVMVectorize.a;/usr/lib/libLLVMLinker.a;/usr/lib/libLLVMIRReader.a;/usr/lib/libLLVMAsmParser.a;/usr/lib/libLLVMAMDGPUAsmParser.a;/usr/lib/libLLVMAMDGPUDesc.a;/usr/lib/libLLVMAMDGPUInfo.a;/usr/lib/libLLVMAMDGPUAsmPrinter.a;/usr/lib/libLLVMAMDGPUUtils.a;/usr/lib/libLLVMAArch64Disassembler.a;/usr/lib/libLLVMAArch64CodeGen.a;/usr/lib/libLLVMAArch64AsmParser.a;/usr/lib/libLLVMAArch64Desc.a;/usr/lib/libLLVMAArch64Info.a;/usr/lib/libLLVMAArch64AsmPrinter.a;/usr/lib/libLLVMAArch64Utils.a;/usr/lib/libLLVMCoverage.a;/usr/lib/libLLVMOrcJIT.a;/usr/lib/libLLVMX86Disassembler.a;/usr/lib/libLLVMX86AsmParser.a;/usr/lib/libLLVMX86CodeGen.a;/usr/lib/libLLVMGlobalISel.a;/usr/lib/libLLVMSelectionDAG.a;/usr/lib/libLLVMAsmPrinter.a;/usr/lib/libLLVMCodeGen.a;/usr/lib/libLLVMScalarOpts.a;/usr/lib/libLLVMInstCombine.a;/usr/lib/libLLVMAggressiveInstCombine.a;/usr/lib/libLLVMTransformUtils.a;/usr/lib/libLLVMBitWriter.a;/usr/lib/libLLVMX86Desc.a;/usr/lib/libLLVMMCDisassembler.a;/usr/lib/libLLVMX86Info.a;/usr/lib/libLLVMX86AsmPrinter.a;/usr/lib/libLLVMX86Utils.a;/usr/lib/libLLVMMCJIT.a;/usr/lib/libLLVMExecutionEngine.a;/usr/lib/libLLVMTarget.a;/usr/lib/libLLVMAnalysis.a;/usr/lib/libLLVMProfileData.a;/usr/lib/libLLVMRuntimeDyld.a;/usr/lib/libLLVMLineEditor.a;/usr/lib/libLLVMSymbolize.a;/usr/lib/libLLVMDebugInfoPDB.a;/usr/lib/libLLVMDebugInfoDWARF.a;/usr/lib/libLLVMObject.a;/usr/lib/libLLVMMCParser.a;/usr/lib/libLLVMMC.a;/usr/lib/libLLVMDebugInfoCodeView.a;/usr/lib/libLLVMDebugInfoMSF.a;/usr/lib/libLLVMBitReader.a;/usr/lib/libLLVMCore.a;/usr/lib/libLLVMBinaryFormat.a;/usr/lib/libLLVMSupport.a;/usr/lib/libLLVMDemangle.a;-lz;-lrt;-ldl;-ltinfo;-lpthread;-lm;-lxml2  
-- Found CLANG: /usr/lib/libclangFrontendTool.so;/usr/lib/libclangCodeGen.so;/usr/lib/libclangFrontend.so;/usr/lib/libclangDriver.so;/usr/lib/libclangSerialization.so;/usr/lib/libclangSema.so;/usr/lib/libclangStaticAnalyzerFrontend.so;/usr/lib/libclangStaticAnalyzerCheckers.so;/usr/lib/libclangStaticAnalyzerCore.so;/usr/lib/libclangAnalysis.so;/usr/lib/libclangASTMatchers.so;/usr/lib/libclangAST.so;/usr/lib/libclangParse.so;/usr/lib/libclangSema.so;/usr/lib/libclangBasic.so;/usr/lib/libclangEdit.so;/usr/lib/libclangLex.so;/usr/lib/libclangARCMigrate.so;/usr/lib/libclangRewriteFrontend.so;/usr/lib/libclangRewrite.so;/usr/lib/libclangCrossTU.so;/usr/lib/libclangIndex.so  
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Configuring done
-- Generating done
-- Build files have been written to: /home/wink/prgs/ziglang/zig2/build
wink@wink-desktop:~/prgs/ziglang/zig2/build
$ ninja
[270/272] Generating libuserland.a
FAILED: libuserland.a 
cd /home/wink/prgs/ziglang/zig2 && /home/wink/prgs/ziglang/zig2/build/zig0 build --override-std-dir std --override-lib-dir /home/wink/prgs/ziglang/zig2 libuserland -Doutput-dir=/home/wink/prgs/ziglang/zig2/build
: CommandLine Error: Option 'dump-thin-cg-sccs' registered more than once!
LLVM ERROR: inconsistency in registered CommandLine options
ninja: build stopped: subcommand failed.

Building the Debug version succeeds:

wink@wink-desktop:~/prgs/ziglang/zig2/build
$ rm -rf * .ninja_*
wink@wink-desktop:~/prgs/ziglang/zig2/build
$ cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Debug
-- The C compiler identification is GNU 8.2.1
-- The CXX compiler identification is GNU 8.2.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Configuring zig version 0.4.0+0f8fc3b9
-- Found LLVM: -lLLVM-8  
-- Found CLANG: /usr/lib/libclangFrontendTool.so;/usr/lib/libclangCodeGen.so;/usr/lib/libclangFrontend.so;/usr/lib/libclangDriver.so;/usr/lib/libclangSerialization.so;/usr/lib/libclangSema.so;/usr/lib/libclangStaticAnalyzerFrontend.so;/usr/lib/libclangStaticAnalyzerCheckers.so;/usr/lib/libclangStaticAnalyzerCore.so;/usr/lib/libclangAnalysis.so;/usr/lib/libclangASTMatchers.so;/usr/lib/libclangAST.so;/usr/lib/libclangParse.so;/usr/lib/libclangSema.so;/usr/lib/libclangBasic.so;/usr/lib/libclangEdit.so;/usr/lib/libclangLex.so;/usr/lib/libclangARCMigrate.so;/usr/lib/libclangRewriteFrontend.so;/usr/lib/libclangRewrite.so;/usr/lib/libclangCrossTU.so;/usr/lib/libclangIndex.so  
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Configuring done
-- Generating done
-- Build files have been written to: /home/wink/prgs/ziglang/zig2/build
wink@wink-desktop:~/prgs/ziglang/zig2/build
$ ninja
[272/272] Linking CXX executable zig
wink@wink-desktop:~/prgs/ziglang/zig2/build
$ ./zig version
0.4.0+0f8fc3b9

What's happening is Arch Linux has both static (libLLVM[[:alpha:]]+.a) and shared (libLLVM-8.so) libLLVM* libraries for LLVM. But it has only shared libclang[[:alpha:]]+.so libraries with the full C++ API for CLANG . Because of the logic in cmake/Findllvm.cmake when CMAKE_BUILD_TYPE is NOT "Debug" zig prefers static libraries for LLVM:

if(NOT(CMAKE_BUILD_TYPE STREQUAL "Debug") OR ZIG_STATIC)
  execute_process(
      COMMAND ${LLVM_CONFIG_EXE} --libfiles --link-static
      OUTPUT_VARIABLE LLVM_LIBRARIES_SPACES
      OUTPUT_STRIP_TRAILING_WHITESPACE)
  string(REPLACE " " ";" LLVM_LIBRARIES "${LLVM_LIBRARIES_SPACES}")
  ...

So we get the libLLVM[[:alpha:]]+.so files statically linked to zig0:

-- Found LLVM: /usr/lib/libLLVMFuzzMutate.a;/usr/lib/libLLVMTableGen.a;/usr/lib/libLLVMLibDriver.a;/usr/lib/libLLVMDlltoolDriver.a;/usr/lib/libLLVMOption.a;/usr/lib/libLLVMXRay.a;/usr/lib/libLLVMLTO.a;/usr/lib/libLLVMPasses.a;/usr/lib/libLLVMObjCARCOpts.a;/usr/lib/libLLVMCoroutines.a;/usr/lib/libLLVMTextAPI.a;/usr/lib/libLLVMWindowsManifest.a;/usr/lib/libLLVMInterpreter.a;/usr/lib/libLLVMOptRemarks.a;/usr/lib/libLLVMMIRParser.a;/usr/lib/libLLVMObjectYAML.a;/usr/lib/libLLVMMCA.a;/usr/lib/libLLVMXCoreDisassembler.a;/usr/lib/libLLVMXCoreCodeGen.a;/usr/lib/libLLVMXCoreDesc.a;/usr/lib/libLLVMXCoreInfo.a;/usr/lib/libLLVMXCoreAsmPrinter.a;/usr/lib/libLLVMWebAssemblyDisassembler.a;/usr/lib/libLLVMWebAssemblyCodeGen.a;/usr/lib/libLLVMWebAssemblyDesc.a;/usr/lib/libLLVMWebAssemblyAsmPrinter.a;/usr/lib/libLLVMWebAssemblyAsmParser.a;/usr/lib/libLLVMWebAssemblyInfo.a;/usr/lib/libLLVMSystemZDisassembler.a;/usr/lib/libLLVMSystemZCodeGen.a;/usr/lib/libLLVMSystemZAsmParser.a;/usr/lib/libLLVMSystemZDesc.a;/usr/lib/libLLVMSystemZInfo.a;/usr/lib/libLLVMSystemZAsmPrinter.a;/usr/lib/libLLVMSparcDisassembler.a;/usr/lib/libLLVMSparcCodeGen.a;/usr/lib/libLLVMSparcAsmParser.a;/usr/lib/libLLVMSparcDesc.a;/usr/lib/libLLVMSparcInfo.a;/usr/lib/libLLVMSparcAsmPrinter.a;/usr/lib/libLLVMPowerPCDisassembler.a;/usr/lib/libLLVMPowerPCCodeGen.a;/usr/lib/libLLVMPowerPCAsmParser.a;/usr/lib/libLLVMPowerPCDesc.a;/usr/lib/libLLVMPowerPCInfo.a;/usr/lib/libLLVMPowerPCAsmPrinter.a;/usr/lib/libLLVMNVPTXCodeGen.a;/usr/lib/libLLVMNVPTXDesc.a;/usr/lib/libLLVMNVPTXInfo.a;/usr/lib/libLLVMNVPTXAsmPrinter.a;/usr/lib/libLLVMMSP430Disassembler.a;/usr/lib/libLLVMMSP430CodeGen.a;/usr/lib/libLLVMMSP430AsmParser.a;/usr/lib/libLLVMMSP430Desc.a;/usr/lib/libLLVMMSP430Info.a;/usr/lib/libLLVMMSP430AsmPrinter.a;/usr/lib/libLLVMMipsDisassembler.a;/usr/lib/libLLVMMipsCodeGen.a;/usr/lib/libLLVMMipsAsmParser.a;/usr/lib/libLLVMMipsDesc.a;/usr/lib/libLLVMMipsInfo.a;/usr/lib/libLLVMMipsAsmPrinter.a;/usr/lib/libLLVMLanaiDisassembler.a;/usr/lib/libLLVMLanaiCodeGen.a;/usr/lib/libLLVMLanaiAsmParser.a;/usr/lib/libLLVMLanaiDesc.a;/usr/lib/libLLVMLanaiAsmPrinter.a;/usr/lib/libLLVMLanaiInfo.a;/usr/lib/libLLVMHexagonDisassembler.a;/usr/lib/libLLVMHexagonCodeGen.a;/usr/lib/libLLVMHexagonAsmParser.a;/usr/lib/libLLVMHexagonDesc.a;/usr/lib/libLLVMHexagonInfo.a;/usr/lib/libLLVMBPFDisassembler.a;/usr/lib/libLLVMBPFCodeGen.a;/usr/lib/libLLVMBPFAsmParser.a;/usr/lib/libLLVMBPFDesc.a;/usr/lib/libLLVMBPFInfo.a;/usr/lib/libLLVMBPFAsmPrinter.a;/usr/lib/libLLVMARMDisassembler.a;/usr/lib/libLLVMARMCodeGen.a;/usr/lib/libLLVMARMAsmParser.a;/usr/lib/libLLVMARMDesc.a;/usr/lib/libLLVMARMInfo.a;/usr/lib/libLLVMARMAsmPrinter.a;/usr/lib/libLLVMARMUtils.a;/usr/lib/libLLVMAMDGPUDisassembler.a;/usr/lib/libLLVMAMDGPUCodeGen.a;/usr/lib/libLLVMipo.a;/usr/lib/libLLVMInstrumentation.a;/usr/lib/libLLVMVectorize.a;/usr/lib/libLLVMLinker.a;/usr/lib/libLLVMIRReader.a;/usr/lib/libLLVMAsmParser.a;/usr/lib/libLLVMAMDGPUAsmParser.a;/usr/lib/libLLVMAMDGPUDesc.a;/usr/lib/libLLVMAMDGPUInfo.a;/usr/lib/libLLVMAMDGPUAsmPrinter.a;/usr/lib/libLLVMAMDGPUUtils.a;/usr/lib/libLLVMAArch64Disassembler.a;/usr/lib/libLLVMAArch64CodeGen.a;/usr/lib/libLLVMAArch64AsmParser.a;/usr/lib/libLLVMAArch64Desc.a;/usr/lib/libLLVMAArch64Info.a;/usr/lib/libLLVMAArch64AsmPrinter.a;/usr/lib/libLLVMAArch64Utils.a;/usr/lib/libLLVMCoverage.a;/usr/lib/libLLVMOrcJIT.a;/usr/lib/libLLVMX86Disassembler.a;/usr/lib/libLLVMX86AsmParser.a;/usr/lib/libLLVMX86CodeGen.a;/usr/lib/libLLVMGlobalISel.a;/usr/lib/libLLVMSelectionDAG.a;/usr/lib/libLLVMAsmPrinter.a;/usr/lib/libLLVMCodeGen.a;/usr/lib/libLLVMScalarOpts.a;/usr/lib/libLLVMInstCombine.a;/usr/lib/libLLVMAggressiveInstCombine.a;/usr/lib/libLLVMTransformUtils.a;/usr/lib/libLLVMBitWriter.a;/usr/lib/libLLVMX86Desc.a;/usr/lib/libLLVMMCDisassembler.a;/usr/lib/libLLVMX86Info.a;/usr/lib/libLLVMX86AsmPrinter.a;/usr/lib/libLLVMX86Utils.a;/usr/lib/libLLVMMCJIT.a;/usr/lib/libLLVMExecutionEngine.a;/usr/lib/libLLVMTarget.a;/usr/lib/libLLVMAnalysis.a;/usr/lib/libLLVMProfileData.a;/usr/lib/libLLVMRuntimeDyld.a;/usr/lib/libLLVMLineEditor.a;/usr/lib/libLLVMSymbolize.a;/usr/lib/libLLVMDebugInfoPDB.a;/usr/lib/libLLVMDebugInfoDWARF.a;/usr/lib/libLLVMObject.a;/usr/lib/libLLVMMCParser.a;/usr/lib/libLLVMMC.a;/usr/lib/libLLVMDebugInfoCodeView.a;/usr/lib/libLLVMDebugInfoMSF.a;/usr/lib/libLLVMBitReader.a;/usr/lib/libLLVMCore.a;/usr/lib/libLLVMBinaryFormat.a;/usr/lib/libLLVMSupport.a;/usr/lib/libLLVMDemangle.a;-lz;-lrt;-ldl;-ltinfo;-lpthread;-lm;-lxml2  

But for CLANG we get shared libraries:

-- Found CLANG: /usr/lib/libclangFrontendTool.so;/usr/lib/libclangCodeGen.so;/usr/lib/libclangFrontend.so;/usr/lib/libclangDriver.so;/usr/lib/libclangSerialization.so;/usr/lib/libclangSema.so;/usr/lib/libclangStaticAnalyzerFrontend.so;/usr/lib/libclangStaticAnalyzerCheckers.so;/usr/lib/libclangStaticAnalyzerCore.so;/usr/lib/libclangAnalysis.so;/usr/lib/libclangASTMatchers.so;/usr/lib/libclangAST.so;/usr/lib/libclangParse.so;/usr/lib/libclangSema.so;/usr/lib/libclangBasic.so;/usr/lib/libclangEdit.so;/usr/lib/libclangLex.so;/usr/lib/libclangARCMigrate.so;/usr/lib/libclangRewriteFrontend.so;/usr/lib/libclangRewrite.so;/usr/lib/libclangCrossTU.so;/usr/lib/libclangIndex.so  

So zig0 has statically linked libLLVM[[:alpha:]]+.a but to be able to link the CLANG shared libraries it needs libLLVM-8.so as can be seen in the ldd output:

wink@wink-desktop:~/prgs/ziglang/zig2/build
$ ldd ./zig0
	linux-vdso.so.1 (0x00007fff76bfa000)
	libclangFrontendTool.so.8 => /usr/lib/libclangFrontendTool.so.8 (0x00007f81cbc42000)
	libclangCodeGen.so.8 => /usr/lib/libclangCodeGen.so.8 (0x00007f81cb7af000)
	libclangFrontend.so.8 => /usr/lib/libclangFrontend.so.8 (0x00007f81cb646000)
	libclangDriver.so.8 => /usr/lib/libclangDriver.so.8 (0x00007f81cb458000)
	libclangSerialization.so.8 => /usr/lib/libclangSerialization.so.8 (0x00007f81cb2c3000)
	libclangSema.so.8 => /usr/lib/libclangSema.so.8 (0x00007f81cab30000)
	libclangStaticAnalyzerFrontend.so.8 => /usr/lib/libclangStaticAnalyzerFrontend.so.8 (0x00007f81caad3000)
	libclangStaticAnalyzerCheckers.so.8 => /usr/lib/libclangStaticAnalyzerCheckers.so.8 (0x00007f81ca701000)
	libclangStaticAnalyzerCore.so.8 => /usr/lib/libclangStaticAnalyzerCore.so.8 (0x00007f81ca4db000)
	libclangAnalysis.so.8 => /usr/lib/libclangAnalysis.so.8 (0x00007f81ca3d5000)
	libclangASTMatchers.so.8 => /usr/lib/libclangASTMatchers.so.8 (0x00007f81ca34f000)
	libclangAST.so.8 => /usr/lib/libclangAST.so.8 (0x00007f81c9f2e000)
	libclangParse.so.8 => /usr/lib/libclangParse.so.8 (0x00007f81c9e35000)
	libclangBasic.so.8 => /usr/lib/libclangBasic.so.8 (0x00007f81c9b01000)
	libclangEdit.so.8 => /usr/lib/libclangEdit.so.8 (0x00007f81c9af0000)
	libclangLex.so.8 => /usr/lib/libclangLex.so.8 (0x00007f81c9a25000)
	libclangARCMigrate.so.8 => /usr/lib/libclangARCMigrate.so.8 (0x00007f81c9759000)
	libclangRewriteFrontend.so.8 => /usr/lib/libclangRewriteFrontend.so.8 (0x00007f81c96e0000)
	libclangRewrite.so.8 => /usr/lib/libclangRewrite.so.8 (0x00007f81c96ca000)
	libclangCrossTU.so.8 => /usr/lib/libclangCrossTU.so.8 (0x00007f81c96bb000)
	libclangIndex.so.8 => /usr/lib/libclangIndex.so.8 (0x00007f81c9661000)
	libz.so.1 => /usr/lib/libz.so.1 (0x00007f81c944a000)
	librt.so.1 => /usr/lib/librt.so.1 (0x00007f81c9440000)
	libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f81c943b000)
	libncursesw.so.6 => /usr/lib/libncursesw.so.6 (0x00007f81c93ca000)
	libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f81c93a9000)
	libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00007f81c9241000)
	libm.so.6 => /usr/lib/libm.so.6 (0x00007f81c90bc000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f81c8f2d000)
	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f81c8f13000)
	libc.so.6 => /usr/lib/libc.so.6 (0x00007f81c8d4d000)
	/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f81cff14000)
>>>	libLLVM-8.so => /usr/lib/../lib/libLLVM-8.so (0x00007f81c48cd000)
	libclangFormat.so.8 => /usr/lib/../lib/libclangFormat.so.8 (0x00007f81c4833000)
	libclangToolingCore.so.8 => /usr/lib/../lib/libclangToolingCore.so.8 (0x00007f81c481c000)
	libicuuc.so.64 => /usr/lib/libicuuc.so.64 (0x00007f81c4644000)
	liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007f81c441e000)
	libffi.so.6 => /usr/lib/../lib/../lib/libffi.so.6 (0x00007f81c4413000)
	libedit.so.0 => /usr/lib/../lib/../lib/libedit.so.0 (0x00007f81c43d9000)
	libclangToolingInclusions.so.8 => /usr/lib/../lib/../lib/libclangToolingInclusions.so.8 (0x00007f81c43cb000)
	libicudata.so.64 => /usr/lib/libicudata.so.64 (0x00007f81c2987000)

So we end up with two copies of the LLVM libraries, one static and one dynamic and so executing zig0 fails.

There are various work-arounds:

In my opinion those work-arounds aren't great. I think all LLVM related libraries, static or shared, should be linked to zig the same way and the user should be able to control which.

Other thoughts?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions