halide / Halide

a language for fast, portable data-parallel computation
https://halide-lang.org
Other
5.88k stars 1.07k forks source link

Build fails (ar invalid option -- 'L') #1109

Open kwohlfahrt opened 8 years ago

kwohlfahrt commented 8 years ago

Halide has started failing to build recently. This is probably due to a change in configuration on my part, since it also affects old tags that used to build. However the issue seems to be limited to halide, so something is fishy.

I'm building using the Makefile. It fails when trying to run extract.sh, here are the first few lines of that script:

ar x -lLLVMPowerPCDisassembler ; mv  llvm_1_ /usr/lib64/libLLVMPowerPCDisassembler.so 
ar x -lLLVMPowerPCCodeGen ; mv  llvm_2_ /usr/lib64/libLLVMPowerPCCodeGen.so 
ar x -lLLVMPowerPCAsmParser ; mv  llvm_3_ /usr/lib64/libLLVMPowerPCAsmParser.so 
ar x -lLLVMPowerPCDesc ; mv  llvm_4_ /usr/lib64/libLLVMPowerPCDesc.so 
ar x -lLLVMPowerPCInfo ; mv  llvm_5_ /usr/lib64/libLLVMPowerPCInfo.so 

And the error (there lots of these, I assume every line in extract.sh fails:

ar: invalid option -- 'L'
Usage: ar [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...
       ar -M [<mri-script]
 commands:
  d            - delete file(s) from the archive
  m[ab]        - move file(s) in the archive
  p            - print file(s) found in the archive
  q[f]         - quick append file(s) to the archive
  r[ab][f][u]  - replace existing or insert new file(s) into the archive
  s            - act as ranlib
  t            - display contents of archive
  x[o]         - extract file(s) from the archive
 command specific modifiers:
  [a]          - put file(s) after [member-name]
  [b]          - put file(s) before [member-name] (same as [i])
  [D]          - use zero for timestamps and uids/gids
  [U]          - use actual timestamps and uids/gids (default)
  [N]          - use instance [count] of name
  [f]          - truncate inserted file names
  [P]          - use full path names when matching
  [o]          - preserve original dates
  [u]          - only replace files that are newer than current archive contents
 generic modifiers:
  [c]          - do not warn if the library had to be created
  [s]          - create an archive index (cf. ranlib)
  [S]          - do not build a symbol table
  [T]          - make a thin archive
  [v]          - be verbose
  [V]          - display the version number
  @<file>      - read options from <file>
  --target=BFDNAME - specify the target object format as BFDNAME
 optional:
  --plugin <p> - load the specified plugin
 emulation options: 
  No emulation specific options
ar: supported targets: elf64-x86-64 elf32-i386 elf32-x86-64 a.out-i386-linux pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex
mv: cannot stat ‘llvm_1_’: No such file or directory

Some other information that might be useful:

$ ar --version
GNU ar (Gentoo 2.25.1 p1.1) 2.25.1
Copyright (C) 2014 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
$ llvm-ar x -lLLVMPowerPCDisassembler
llvm-ar: Unknown command line argument '-lLLVMPowerPCDisassembler'.  Try: 'llvm-ar -help'
llvm-ar: Did you mean '-asan-instrument-assembly'?
$ llvm-ar --version
LLVM (http://llvm.org/):
  LLVM version 3.7.1
  Optimized build.
  Default target: x86_64-pc-linux-gnu
  Host CPU: haswell

Please let me know if you have any advice to fix my setup, or if I can provide any more useful informatiln.

zvookin commented 8 years ago

I'm going to guess that the linker on your system has a different output format for the -t flag ("-Wl,-t" in the Makefile). Can you send the contents of bin/build/llvm_objects/list in the Halide directory you are building in?

Also the output of "ld --version" or "ld -v" might help.

I think we are now at the point where this mechanism has shown enough flakiness due to different linkers producing different output that we should probably find another way to make the list of LLVM object files, but hopefully we can get a fix for this specific issue more quickly.

Thanks, -Z-

On Sun, Apr 10, 2016 at 11:47 AM, Kai notifications@github.com wrote:

Halide has started failing to build recently. This is probably due to a change in configuration on my part, since it also affects old tags that used to build. However the issue seems to be limited to halide, so something is fishy.

I'm building using the Makefile. It fails when trying to run extract.sh, here are the first few lines of that script:

ar x -lLLVMPowerPCDisassembler ; mv llvm1 /usr/lib64/libLLVMPowerPCDisassembler.so ar x -lLLVMPowerPCCodeGen ; mv llvm2 /usr/lib64/libLLVMPowerPCCodeGen.so ar x -lLLVMPowerPCAsmParser ; mv llvm3 /usr/lib64/libLLVMPowerPCAsmParser.so ar x -lLLVMPowerPCDesc ; mv llvm4 /usr/lib64/libLLVMPowerPCDesc.so ar x -lLLVMPowerPCInfo ; mv llvm5 /usr/lib64/libLLVMPowerPCInfo.so

And the error (there lots of these, I assume every line in extract.sh fails:

ar: invalid option -- 'L' Usage: ar [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin ] [member-name] [count] archive-file file... ar -M [<mri-script] commands: d - delete file(s) from the archive m[ab] - move file(s) in the archive p - print file(s) found in the archive q[f] - quick append file(s) to the archive r[ab][f][u] - replace existing or insert new file(s) into the archive s - act as ranlib t - display contents of archive x[o] - extract file(s) from the archive command specific modifiers: [a] - put file(s) after [member-name] [b] - put file(s) before [member-name] (same as [i]) [D] - use zero for timestamps and uids/gids [U] - use actual timestamps and uids/gids (default) [N] - use instance [count] of name [f] - truncate inserted file names [P] - use full path names when matching [o] - preserve original dates [u] - only replace files that are newer than current archive contents generic modifiers: [c] - do not warn if the library had to be created [s] - create an archive index (cf. ranlib) [S] - do not build a symbol table [T] - make a thin archive [v] - be verbose [V] - display the version number @ - read options from --target=BFDNAME - specify the target object format as BFDNAME optional: --plugin

- load the specified plugin emulation options: No emulation specific options ar: supported targets: elf64-x86-64 elf32-i386 elf32-x86-64 a.out-i386-linux pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex mv: cannot stat ‘llvm1’: No such file or directory

Some other information that might be useful:

$ ar --version GNU ar (Gentoo 2.25.1 p1.1) 2.25.1 Copyright (C) 2014 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or (at your option) any later version. This program has absolutely no warranty. $ llvm-ar x -lLLVMPowerPCDisassembler llvm-ar: Unknown command line argument '-lLLVMPowerPCDisassembler'. Try: 'llvm-ar -help' llvm-ar: Did you mean '-asan-instrument-assembly'? $ llvm-ar --version LLVM (http://llvm.org/): LLVM version 3.7.1 Optimized build. Default target: x86_64-pc-linux-gnu Host CPU: haswell

Please let me know if you have any advice to fix my setup, or if I can provide any more useful informatiln.

— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub https://github.com/halide/Halide/issues/1109

kwohlfahrt commented 8 years ago

That file looks like this:

$  cat llvm_objects/list 
-lLLVMPowerPCDisassembler (/usr/lib64/libLLVMPowerPCDisassembler.so)
-lLLVMPowerPCCodeGen (/usr/lib64/libLLVMPowerPCCodeGen.so)
-lLLVMPowerPCAsmParser (/usr/lib64/libLLVMPowerPCAsmParser.so)
-lLLVMPowerPCDesc (/usr/lib64/libLLVMPowerPCDesc.so)
-lLLVMPowerPCInfo (/usr/lib64/libLLVMPowerPCInfo.so)
-lLLVMPowerPCAsmPrinter (/usr/lib64/libLLVMPowerPCAsmPrinter.so)
-lLLVMMipsDisassembler (/usr/lib64/libLLVMMipsDisassembler.so)
-lLLVMMipsCodeGen (/usr/lib64/libLLVMMipsCodeGen.so)
-lLLVMMipsAsmParser (/usr/lib64/libLLVMMipsAsmParser.so)
-lLLVMMipsDesc (/usr/lib64/libLLVMMipsDesc.so)
-lLLVMMipsInfo (/usr/lib64/libLLVMMipsInfo.so)
-lLLVMMipsAsmPrinter (/usr/lib64/libLLVMMipsAsmPrinter.so)
-lLLVMAArch64Disassembler (/usr/lib64/libLLVMAArch64Disassembler.so)
-lLLVMAArch64CodeGen (/usr/lib64/libLLVMAArch64CodeGen.so)
-lLLVMAArch64AsmParser (/usr/lib64/libLLVMAArch64AsmParser.so)
-lLLVMAArch64Desc (/usr/lib64/libLLVMAArch64Desc.so)
-lLLVMAArch64Info (/usr/lib64/libLLVMAArch64Info.so)
-lLLVMAArch64AsmPrinter (/usr/lib64/libLLVMAArch64AsmPrinter.so)
-lLLVMAArch64Utils (/usr/lib64/libLLVMAArch64Utils.so)
-lLLVMNVPTXCodeGen (/usr/lib64/libLLVMNVPTXCodeGen.so)
-lLLVMNVPTXDesc (/usr/lib64/libLLVMNVPTXDesc.so)
-lLLVMNVPTXInfo (/usr/lib64/libLLVMNVPTXInfo.so)
-lLLVMNVPTXAsmPrinter (/usr/lib64/libLLVMNVPTXAsmPrinter.so)
-lLLVMARMDisassembler (/usr/lib64/libLLVMARMDisassembler.so)
-lLLVMARMCodeGen (/usr/lib64/libLLVMARMCodeGen.so)
-lLLVMARMAsmParser (/usr/lib64/libLLVMARMAsmParser.so)
-lLLVMARMDesc (/usr/lib64/libLLVMARMDesc.so)
-lLLVMARMInfo (/usr/lib64/libLLVMARMInfo.so)
-lLLVMARMAsmPrinter (/usr/lib64/libLLVMARMAsmPrinter.so)
-lLLVMX86Disassembler (/usr/lib64/libLLVMX86Disassembler.so)
-lLLVMX86AsmParser (/usr/lib64/libLLVMX86AsmParser.so)
-lLLVMX86CodeGen (/usr/lib64/libLLVMX86CodeGen.so)
-lLLVMSelectionDAG (/usr/lib64/libLLVMSelectionDAG.so)
-lLLVMAsmPrinter (/usr/lib64/libLLVMAsmPrinter.so)
-lLLVMCodeGen (/usr/lib64/libLLVMCodeGen.so)
-lLLVMInstrumentation (/usr/lib64/libLLVMInstrumentation.so)
-lLLVMX86Desc (/usr/lib64/libLLVMX86Desc.so)
-lLLVMMCDisassembler (/usr/lib64/libLLVMMCDisassembler.so)
-lLLVMX86Info (/usr/lib64/libLLVMX86Info.so)
-lLLVMX86AsmPrinter (/usr/lib64/libLLVMX86AsmPrinter.so)
-lLLVMX86Utils (/usr/lib64/libLLVMX86Utils.so)
-lLLVMMCJIT (/usr/lib64/libLLVMMCJIT.so)
-lLLVMExecutionEngine (/usr/lib64/libLLVMExecutionEngine.so)
-lLLVMTarget (/usr/lib64/libLLVMTarget.so)
-lLLVMRuntimeDyld (/usr/lib64/libLLVMRuntimeDyld.so)
-lLLVMipo (/usr/lib64/libLLVMipo.so)
-lLLVMVectorize (/usr/lib64/libLLVMVectorize.so)
-lLLVMScalarOpts (/usr/lib64/libLLVMScalarOpts.so)
-lLLVMProfileData (/usr/lib64/libLLVMProfileData.so)
-lLLVMObject (/usr/lib64/libLLVMObject.so)
-lLLVMMCParser (/usr/lib64/libLLVMMCParser.so)
-lLLVMMC (/usr/lib64/libLLVMMC.so)
-lLLVMInstCombine (/usr/lib64/libLLVMInstCombine.so)
-lLLVMLinker (/usr/lib64/libLLVMLinker.so)
-lLLVMTransformUtils (/usr/lib64/libLLVMTransformUtils.so)
-lLLVMipa (/usr/lib64/libLLVMipa.so)
-lLLVMAnalysis (/usr/lib64/libLLVMAnalysis.so)
-lLLVMBitReader (/usr/lib64/libLLVMBitReader.so)
-lLLVMBitWriter (/usr/lib64/libLLVMBitWriter.so)
-lLLVMCore (/usr/lib64/libLLVMCore.so)
-lLLVMSupport (/usr/lib64/libLLVMSupport.so)
zvookin commented 8 years ago

This looks like it is halfway trying to use shared libraries, but not just as one .so. Really I'd expect you want to build with USE_LLVM_SHARED_LIB=1 on the make command line. Might be worth trying that. (It seems llvm-config --libs is returning .so's, not .a's as the Makefile logic to extract .o's expects.)

-Z-

On Sun, Apr 10, 2016 at 2:19 PM, Kai notifications@github.com wrote:

That file looks like this:

$ cat llvm_objects/list -lLLVMPowerPCDisassembler (/usr/lib64/libLLVMPowerPCDisassembler.so) -lLLVMPowerPCCodeGen (/usr/lib64/libLLVMPowerPCCodeGen.so) -lLLVMPowerPCAsmParser (/usr/lib64/libLLVMPowerPCAsmParser.so) -lLLVMPowerPCDesc (/usr/lib64/libLLVMPowerPCDesc.so) -lLLVMPowerPCInfo (/usr/lib64/libLLVMPowerPCInfo.so) -lLLVMPowerPCAsmPrinter (/usr/lib64/libLLVMPowerPCAsmPrinter.so) -lLLVMMipsDisassembler (/usr/lib64/libLLVMMipsDisassembler.so) -lLLVMMipsCodeGen (/usr/lib64/libLLVMMipsCodeGen.so) -lLLVMMipsAsmParser (/usr/lib64/libLLVMMipsAsmParser.so) -lLLVMMipsDesc (/usr/lib64/libLLVMMipsDesc.so) -lLLVMMipsInfo (/usr/lib64/libLLVMMipsInfo.so) -lLLVMMipsAsmPrinter (/usr/lib64/libLLVMMipsAsmPrinter.so) -lLLVMAArch64Disassembler (/usr/lib64/libLLVMAArch64Disassembler.so) -lLLVMAArch64CodeGen (/usr/lib64/libLLVMAArch64CodeGen.so) -lLLVMAArch64AsmParser (/usr/lib64/libLLVMAArch64AsmParser.so) -lLLVMAArch64Desc (/usr/lib64/libLLVMAArch64Desc.so) -lLLVMAArch64Info (/usr/lib64/libLLVMAArch64Info.so) -lLLVMAArch64AsmPrinter (/usr/lib64/libLLVMAArch64AsmPrinter.so) -lLLVMAArch64Utils (/usr/lib64/libLLVMAArch64Utils.so) -lLLVMNVPTXCodeGen (/usr/lib64/libLLVMNVPTXCodeGen.so) -lLLVMNVPTXDesc (/usr/lib64/libLLVMNVPTXDesc.so) -lLLVMNVPTXInfo (/usr/lib64/libLLVMNVPTXInfo.so) -lLLVMNVPTXAsmPrinter (/usr/lib64/libLLVMNVPTXAsmPrinter.so) -lLLVMARMDisassembler (/usr/lib64/libLLVMARMDisassembler.so) -lLLVMARMCodeGen (/usr/lib64/libLLVMARMCodeGen.so) -lLLVMARMAsmParser (/usr/lib64/libLLVMARMAsmParser.so) -lLLVMARMDesc (/usr/lib64/libLLVMARMDesc.so) -lLLVMARMInfo (/usr/lib64/libLLVMARMInfo.so) -lLLVMARMAsmPrinter (/usr/lib64/libLLVMARMAsmPrinter.so) -lLLVMX86Disassembler (/usr/lib64/libLLVMX86Disassembler.so) -lLLVMX86AsmParser (/usr/lib64/libLLVMX86AsmParser.so) -lLLVMX86CodeGen (/usr/lib64/libLLVMX86CodeGen.so) -lLLVMSelectionDAG (/usr/lib64/libLLVMSelectionDAG.so) -lLLVMAsmPrinter (/usr/lib64/libLLVMAsmPrinter.so) -lLLVMCodeGen (/usr/lib64/libLLVMCodeGen.so) -lLLVMInstrumentation (/usr/lib64/libLLVMInstrumentation.so) -lLLVMX86Desc (/usr/lib64/libLLVMX86Desc.so) -lLLVMMCDisassembler (/usr/lib64/libLLVMMCDisassembler.so) -lLLVMX86Info (/usr/lib64/libLLVMX86Info.so) -lLLVMX86AsmPrinter (/usr/lib64/libLLVMX86AsmPrinter.so) -lLLVMX86Utils (/usr/lib64/libLLVMX86Utils.so) -lLLVMMCJIT (/usr/lib64/libLLVMMCJIT.so) -lLLVMExecutionEngine (/usr/lib64/libLLVMExecutionEngine.so) -lLLVMTarget (/usr/lib64/libLLVMTarget.so) -lLLVMRuntimeDyld (/usr/lib64/libLLVMRuntimeDyld.so) -lLLVMipo (/usr/lib64/libLLVMipo.so) -lLLVMVectorize (/usr/lib64/libLLVMVectorize.so) -lLLVMScalarOpts (/usr/lib64/libLLVMScalarOpts.so) -lLLVMProfileData (/usr/lib64/libLLVMProfileData.so) -lLLVMObject (/usr/lib64/libLLVMObject.so) -lLLVMMCParser (/usr/lib64/libLLVMMCParser.so) -lLLVMMC (/usr/lib64/libLLVMMC.so) -lLLVMInstCombine (/usr/lib64/libLLVMInstCombine.so) -lLLVMLinker (/usr/lib64/libLLVMLinker.so) -lLLVMTransformUtils (/usr/lib64/libLLVMTransformUtils.so) -lLLVMipa (/usr/lib64/libLLVMipa.so) -lLLVMAnalysis (/usr/lib64/libLLVMAnalysis.so) -lLLVMBitReader (/usr/lib64/libLLVMBitReader.so) -lLLVMBitWriter (/usr/lib64/libLLVMBitWriter.so) -lLLVMCore (/usr/lib64/libLLVMCore.so) -lLLVMSupport (/usr/lib64/libLLVMSupport.so)

— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/halide/Halide/issues/1109#issuecomment-208076455

kwohlfahrt commented 8 years ago

There's a bit of progress, setting that variable results in a different error. The first is because lib is not created in the build directory by the makefile.

ar q lib/libHalide.a bin/build/AddImageChecks.o bin/build/AddParameterChecks.o bin/build/AllocationBoundsInference.o bin/build/BlockFlattening.o (... and loads more .o files)
ar: lib/libHalide.a: No such file or directory
../Makefile:601: recipe for target 'lib/libHalide.a' failed
make: *** [lib/libHalide.a] Error 1

Creating this directory results in:

g++  -shared bin/build/AddImageChecks.o bin/build/AddParameterChecks.o (... lots more .o files) -L/usr/lib64  -L /usr/lib64 -lLLVM-3.7.1 -ldl -lz -lpthread -o bin/libHalide.so
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lLLVM-3.7.1
collect2: error: ld returned 1 exit status
../Makefile:608: recipe for target 'bin/libHalide.so' failed
make: *** [bin/libHalide.so] Error 1

Indeed, /usr/lib64/libLLVM.so does not exist on my system. There are lots of individual LLVM modules, which are returned by llvm-config --libs:

$ find /usr/lib/ -name "libLLVM*.so"
/usr/lib/libLLVMSupport.so
/usr/lib/libLLVMTableGen.so
/usr/lib/libLLVMCore.so
/usr/lib/libLLVMIRReader.so
/usr/lib/libLLVMCodeGen.so
/usr/lib/libLLVMSelectionDAG.so
/usr/lib/libLLVMAsmPrinter.so
/usr/lib/libLLVMMIRParser.so
/usr/lib/libLLVMBitReader.so
/usr/lib/libLLVMBitWriter.so
/usr/lib/libLLVMTransformUtils.so
/usr/lib/libLLVMInstrumentation.so
/usr/lib/libLLVMInstCombine.so
/usr/lib/libLLVMScalarOpts.so
/usr/lib/libLLVMipo.so
/usr/lib/libLLVMVectorize.so
/usr/lib/libLLVMObjCARCOpts.so
/usr/lib/libLLVMLinker.so
/usr/lib/libLLVMAnalysis.so
/usr/lib/libLLVMipa.so
/usr/lib/libLLVMLTO.so
/usr/lib/libLLVMMC.so
/usr/lib/libLLVMMCParser.so
/usr/lib/libLLVMMCDisassembler.so
/usr/lib/libLLVMObject.so
/usr/lib/libLLVMOption.so
/usr/lib/libLLVMDebugInfoDWARF.so
/usr/lib/libLLVMDebugInfoPDB.so
/usr/lib/libLLVMExecutionEngine.so
/usr/lib/libLLVMInterpreter.so
/usr/lib/libLLVMMCJIT.so
/usr/lib/libLLVMOrcJIT.so
/usr/lib/libLLVMRuntimeDyld.so
/usr/lib/libLLVMTarget.so
/usr/lib/libLLVMAArch64CodeGen.so
/usr/lib/libLLVMAArch64Info.so
/usr/lib/libLLVMAArch64AsmParser.so
/usr/lib/libLLVMAArch64Disassembler.so
/usr/lib/libLLVMAArch64AsmPrinter.so
/usr/lib/libLLVMAArch64Desc.so
/usr/lib/libLLVMAArch64Utils.so
/usr/lib/libLLVMAMDGPUCodeGen.so
/usr/lib/libLLVMAMDGPUAsmParser.so
/usr/lib/libLLVMAMDGPUAsmPrinter.so
/usr/lib/libLLVMAMDGPUInfo.so
/usr/lib/libLLVMAMDGPUDesc.so
/usr/lib/libLLVMAMDGPUUtils.so
/usr/lib/libLLVMARMCodeGen.so
/usr/lib/libLLVMARMInfo.so
/usr/lib/libLLVMARMAsmParser.so
/usr/lib/libLLVMARMDisassembler.so
/usr/lib/libLLVMARMAsmPrinter.so
/usr/lib/libLLVMARMDesc.so
/usr/lib/libLLVMBPFCodeGen.so
/usr/lib/libLLVMBPFAsmPrinter.so
/usr/lib/libLLVMBPFInfo.so
/usr/lib/libLLVMBPFDesc.so
/usr/lib/libLLVMCppBackendCodeGen.so
/usr/lib/libLLVMCppBackendInfo.so
/usr/lib/libLLVMHexagonCodeGen.so
/usr/lib/libLLVMHexagonInfo.so
/usr/lib/libLLVMHexagonDesc.so
/usr/lib/libLLVMHexagonDisassembler.so
/usr/lib/libLLVMMipsCodeGen.so
/usr/lib/libLLVMMipsAsmPrinter.so
/usr/lib/libLLVMMipsDisassembler.so
/usr/lib/libLLVMMipsInfo.so
/usr/lib/libLLVMMipsDesc.so
/usr/lib/libLLVMMipsAsmParser.so
/usr/lib/libLLVMMSP430CodeGen.so
/usr/lib/libLLVMMSP430AsmPrinter.so
/usr/lib/libLLVMMSP430Info.so
/usr/lib/libLLVMMSP430Desc.so
/usr/lib/libLLVMNVPTXCodeGen.so
/usr/lib/libLLVMNVPTXInfo.so
/usr/lib/libLLVMNVPTXAsmPrinter.so
/usr/lib/libLLVMNVPTXDesc.so
/usr/lib/libLLVMPowerPCCodeGen.so
/usr/lib/libLLVMPowerPCAsmParser.so
/usr/lib/libLLVMPowerPCDisassembler.so
/usr/lib/libLLVMPowerPCAsmPrinter.so
/usr/lib/libLLVMPowerPCInfo.so
/usr/lib/libLLVMPowerPCDesc.so
/usr/lib/libLLVMSparcCodeGen.so
/usr/lib/libLLVMSparcInfo.so
/usr/lib/libLLVMSparcDesc.so
/usr/lib/libLLVMSparcAsmPrinter.so
/usr/lib/libLLVMSparcAsmParser.so
/usr/lib/libLLVMSparcDisassembler.so
/usr/lib/libLLVMSystemZCodeGen.so
/usr/lib/libLLVMSystemZAsmParser.so
/usr/lib/libLLVMSystemZDisassembler.so
/usr/lib/libLLVMSystemZAsmPrinter.so
/usr/lib/libLLVMSystemZInfo.so
/usr/lib/libLLVMSystemZDesc.so
/usr/lib/libLLVMX86CodeGen.so
/usr/lib/libLLVMX86AsmParser.so
/usr/lib/libLLVMX86Disassembler.so
/usr/lib/libLLVMX86AsmPrinter.so
/usr/lib/libLLVMX86Desc.so
/usr/lib/libLLVMX86Info.so
/usr/lib/libLLVMX86Utils.so
/usr/lib/libLLVMXCoreCodeGen.so
/usr/lib/libLLVMXCoreDisassembler.so
/usr/lib/libLLVMXCoreAsmPrinter.so
/usr/lib/libLLVMXCoreInfo.so
/usr/lib/libLLVMXCoreDesc.so
/usr/lib/libLLVMAsmParser.so
/usr/lib/libLLVMLineEditor.so
/usr/lib/libLLVMProfileData.so
/usr/lib/libLLVMPasses.so
/usr/lib/libLLVMLibDriver.so

Hopefully we're close to figuring this out, thanks for the prompt responses so far!

abadams commented 8 years ago

Do you also have static llvm libraries? i.e. find /usr/lib/ -name "libLLVM*.a"

On Mon, Apr 11, 2016 at 1:35 AM, Kai notifications@github.com wrote:

There's a bit of progress, setting that variable results in a different error. The first is because lib is not created in the build directory by the makefile.

ar q lib/libHalide.a bin/build/AddImageChecks.o bin/build/AddParameterChecks.o bin/build/AllocationBoundsInference.o bin/build/BlockFlattening.o (... and loads more .o files) ar: lib/libHalide.a: No such file or directory ../Makefile:601: recipe for target 'lib/libHalide.a' failed make: *\ [lib/libHalide.a] Error 1

Creating this directory results in:

g++ -shared bin/build/AddImageChecks.o bin/build/AddParameterChecks.o (... lots more .o files) -L/usr/lib64 -L /usr/lib64 -lLLVM-3.7.1 -ldl -lz -lpthread -o bin/libHalide.so /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lLLVM-3.7.1 collect2: error: ld returned 1 exit status ../Makefile:608: recipe for target 'bin/libHalide.so' failed make: *\ [bin/libHalide.so] Error 1

Indeed, /usr/lib64/libLLVM.so does not exist on my system. There are lots of individual LLVM modules, which are returned by llvm-config --libs:

$ find /usr/lib/ -name "libLLVM*.so" /usr/lib/libLLVMSupport.so /usr/lib/libLLVMTableGen.so /usr/lib/libLLVMCore.so /usr/lib/libLLVMIRReader.so /usr/lib/libLLVMCodeGen.so /usr/lib/libLLVMSelectionDAG.so /usr/lib/libLLVMAsmPrinter.so /usr/lib/libLLVMMIRParser.so /usr/lib/libLLVMBitReader.so /usr/lib/libLLVMBitWriter.so /usr/lib/libLLVMTransformUtils.so /usr/lib/libLLVMInstrumentation.so /usr/lib/libLLVMInstCombine.so /usr/lib/libLLVMScalarOpts.so /usr/lib/libLLVMipo.so /usr/lib/libLLVMVectorize.so /usr/lib/libLLVMObjCARCOpts.so /usr/lib/libLLVMLinker.so /usr/lib/libLLVMAnalysis.so /usr/lib/libLLVMipa.so /usr/lib/libLLVMLTO.so /usr/lib/libLLVMMC.so /usr/lib/libLLVMMCParser.so /usr/lib/libLLVMMCDisassembler.so /usr/lib/libLLVMObject.so /usr/lib/libLLVMOption.so /usr/lib/libLLVMDebugInfoDWARF.so /usr/lib/libLLVMDebugInfoPDB.so /usr/lib/libLLVMExecutionEngine.so /usr/lib/libLLVMInterpreter.so /usr/lib/libLLVMMCJIT.so /usr/lib/libLLVMOrcJIT.so /usr/lib/libLLVMRuntimeDyld.so /usr/lib/libLLVMTarget.so /usr/lib/libLLVMAArch64CodeGen.so /usr/lib/libLLVMAArch64Info.so /usr/lib/libLLVMAArch64AsmParser.so /usr/lib/libLLVMAArch64Disassembler.so /usr/lib/libLLVMAArch64AsmPrinter.so /usr/lib/libLLVMAArch64Desc.so /usr/lib/libLLVMAArch64Utils.so /usr/lib/libLLVMAMDGPUCodeGen.so /usr/lib/libLLVMAMDGPUAsmParser.so /usr/lib/libLLVMAMDGPUAsmPrinter.so /usr/lib/libLLVMAMDGPUInfo.so /usr/lib/libLLVMAMDGPUDesc.so /usr/lib/libLLVMAMDGPUUtils.so /usr/lib/libLLVMARMCodeGen.so /usr/lib/libLLVMARMInfo.so /usr/lib/libLLVMARMAsmParser.so /usr/lib/libLLVMARMDisassembler.so /usr/lib/libLLVMARMAsmPrinter.so /usr/lib/libLLVMARMDesc.so /usr/lib/libLLVMBPFCodeGen.so /usr/lib/libLLVMBPFAsmPrinter.so /usr/lib/libLLVMBPFInfo.so /usr/lib/libLLVMBPFDesc.so /usr/lib/libLLVMCppBackendCodeGen.so /usr/lib/libLLVMCppBackendInfo.so /usr/lib/libLLVMHexagonCodeGen.so /usr/lib/libLLVMHexagonInfo.so /usr/lib/libLLVMHexagonDesc.so /usr/lib/libLLVMHexagonDisassembler.so /usr/lib/libLLVMMipsCodeGen.so /usr/lib/libLLVMMipsAsmPrinter.so /usr/lib/libLLVMMipsDisassembler.so /usr/lib/libLLVMMipsInfo.so /usr/lib/libLLVMMipsDesc.so /usr/lib/libLLVMMipsAsmParser.so /usr/lib/libLLVMMSP430CodeGen.so /usr/lib/libLLVMMSP430AsmPrinter.so /usr/lib/libLLVMMSP430Info.so /usr/lib/libLLVMMSP430Desc.so /usr/lib/libLLVMNVPTXCodeGen.so /usr/lib/libLLVMNVPTXInfo.so /usr/lib/libLLVMNVPTXAsmPrinter.so /usr/lib/libLLVMNVPTXDesc.so /usr/lib/libLLVMPowerPCCodeGen.so /usr/lib/libLLVMPowerPCAsmParser.so /usr/lib/libLLVMPowerPCDisassembler.so /usr/lib/libLLVMPowerPCAsmPrinter.so /usr/lib/libLLVMPowerPCInfo.so /usr/lib/libLLVMPowerPCDesc.so /usr/lib/libLLVMSparcCodeGen.so /usr/lib/libLLVMSparcInfo.so /usr/lib/libLLVMSparcDesc.so /usr/lib/libLLVMSparcAsmPrinter.so /usr/lib/libLLVMSparcAsmParser.so /usr/lib/libLLVMSparcDisassembler.so /usr/lib/libLLVMSystemZCodeGen.so /usr/lib/libLLVMSystemZAsmParser.so /usr/lib/libLLVMSystemZDisassembler.so /usr/lib/libLLVMSystemZAsmPrinter.so /usr/lib/libLLVMSystemZInfo.so /usr/lib/libLLVMSystemZDesc.so /usr/lib/libLLVMX86CodeGen.so /usr/lib/libLLVMX86AsmParser.so /usr/lib/libLLVMX86Disassembler.so /usr/lib/libLLVMX86AsmPrinter.so /usr/lib/libLLVMX86Desc.so /usr/lib/libLLVMX86Info.so /usr/lib/libLLVMX86Utils.so /usr/lib/libLLVMXCoreCodeGen.so /usr/lib/libLLVMXCoreDisassembler.so /usr/lib/libLLVMXCoreAsmPrinter.so /usr/lib/libLLVMXCoreInfo.so /usr/lib/libLLVMXCoreDesc.so /usr/lib/libLLVMAsmParser.so /usr/lib/libLLVMLineEditor.so /usr/lib/libLLVMProfileData.so /usr/lib/libLLVMPasses.so /usr/lib/libLLVMLibDriver.so

Hopefully we're close to figuring this out, thanks for the prompt responses so far!

— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub https://github.com/halide/Halide/issues/1109#issuecomment-208230499

kwohlfahrt commented 8 years ago

No, I do not have the static libraries.

kwohlfahrt commented 8 years ago

Any ideas? The static libraries do not come with my system install of llvm (3.7), and the USE_LLVM_SHARED_LIB suggests it is possible to do without them. Otherwise I will try again when 3.8 is released, iirc there were some changes to their build process that might shake things up.

rzhao01 commented 8 years ago

I ran into this issue today as well, and the reason was because my llvm/libs/ directory accidentally contained both shared and static libs. After I removed the shared libs and only built LLVM's static libs everything worked correctly.

Mikdadali commented 4 years ago

can anyone pls help me image

shoaibkamil commented 4 years ago

@Mikdadali Can you tell us more about your environment? What version of LLVM/clang/ar? Can you post full logs?

Mikdadali commented 4 years ago

Sure here you can see full log..

https://jenkins3.legacyserver.in/job/Syberia_mikdad/12/consoleText

A-Ghasemian commented 2 years ago

I still have the problem is there any solutions?