-
Notifications
You must be signed in to change notification settings - Fork 20
Description
Hello,
I'm trying to install Pure on my system (Linux Manjaro) from source. The installation seems successful, but when I want to launch pure I get the following error:
$ pure
./pure: error while loading shared libraries: libpure.so.8: cannot open shared object file: No such file or directory
And this error also exists without make install, when running the freshly compiled executable. I may have made a mistake in the installation process, so I'm providing the logs here, but I think I followed the instructions correctly.
1. I installed LLVM 3.4 -- has been installed correctly,
$ llvm-config --version
3.4
2. Configure -- the logs are:
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking for g++... g++
checking whether the compiler supports GNU C++... yes
checking whether g++ accepts -g... yes
checking for g++ option to enable C++11 features... none needed
checking for bison... bison
checking for flex... flex
checking for emacs... no
configure: WARNING: Cannot find emacs, won't be able to byte-compile pure-mode.el.
checking whether g++ supports C++11 features by default... yes
checking whether the linker accepts -l:libm.a... yes
checking for texmacs... no
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking whether byte ordering is bigendian... no
checking size of void *... 8
checking size of long... 8
checking size of size_t... 8
checking for __gmpz_init in -lgmp... yes
checking for gmp.h... yes
checking for mpfr_init in -lmpfr... yes
checking for mpfr.h... yes
checking for cos in -lm... yes
checking for libiconv in -liconv... no
checking for iconv in -liconv... no
checking for glob in -lglob... no
checking for regcomp in -lregex... no
checking for a readline compatible library... -lreadline
checking for readline/readline.h... yes
checking for edit/readline/readline.h... no
checking for editline/readline.h... yes
checking whether readline supports history... yes
checking for readline/history.h... yes
checking for edit/readline/history.h... no
checking for history_set_history_state... yes
checking for a sed that does not truncate output... /usr/bin/sed
checking how to run the C preprocessor... gcc -E
checking for egrep -e... /usr/bin/grep -E
checking whether gcc is Clang... no
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking whether more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... yes
checking for iconv... yes
checking for iconv declaration...
extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking for nl_langinfo and CODESET... yes
checking for size_t... yes
checking for working alloca.h... yes
checking for alloca... yes
checking for ftime... yes
checking for gettimeofday... yes
checking for nanosleep... yes
checking for usleep... yes
checking whether time.h declares the daylight variable... yes
checking whether struct tm has tm_gmtoff member... yes
checking for strptime... yes
checking for dirent.h... yes
checking for readdir... yes
checking for sys/fcntl.h... yes
checking for sys/wait.h... yes
checking for mkstemp... yes
checking for fstat... yes
checking for _setjmp... yes
checking for _longjmp... yes
checking for struct stat.st_rdev... yes
checking return type of signal handlers... void
checking for type of signal functions... posix
checking if signal handlers must be reinstalled when invoked... yes
checking for _Complex float... yes
checking for _Complex double... yes
checking for llvm-config... llvm-config
checking for shared LLVM library... no
checking for new LLVM IRBuilder class (LLVM >= 3.3)... yes
checking for new llvm::raw_fd_ostream interface (LLVM >= 2.7)... no
checking for new llvm::raw_fd_ostream interface (LLVM >= 3.4)... yes
checking for new user_iterator class (LLVM >= 3.5)... no
checking for llvm/Support/DynamicLibrary.h... yes
checking for llvm/Support/CallSite.h... no
checking for llvm/Support/raw_ostream.h... yes
checking for llvm/Support/raw_os_ostream.h... yes
checking for llvm/ModuleProvider.h... no
checking for llvm/TypeSymbolTable.h... no
checking for llvm/DataLayout.h... no
checking for llvm/IR/DataLayout.h... yes
checking for llvm/DerivedTypes.h... no
checking for llvm/IRBuilder.h... no
checking for llvm/IR/IRBuilder.h... yes
checking for llvm/IR/Verifier.h... no
checking for llvm/IR/CallSite.h... no
checking for llvm/Linker/Linker.h... no
checking for llvm/Support/TargetSelect.h... yes
checking for g++ options needed to detect all undeclared functions... none needed
checking whether llvm::PerformTailCallOpt is declared... no
checking whether llvm::GuaranteedTailCallOpt is declared... no
checking whether llvm::parseBitcodeFile is declared... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating examples/Makefile
config.status: creating pure.pc
config.status: creating run-test
config.status: creating run-tests
config.status: creating config.h
Pure 0.68 is now configured for LLVM 3.4 on x86_64-unknown-linux-gnu.
Source directory: .
Installation prefix: /usr/local
Versioned install: no
C compiler: gcc -g0 -O3 -DNDEBUG -DDEBUG=0
C++ compiler: g++ -g0 -O3 -DNDEBUG -DDEBUG=0
Linker: g++ -lm -lmpfr -lgmp
LLVM tool prefix:
Readline support: -lreadline
Perl regex support: no (use --with-pcre to enable)
POSIX threads: -pthread
Build libpure: yes
fastcc/TCO support: yes
Now run 'make' to build everything, and 'make install' to install this
software on your system. To remove the installed software at a later
time use the 'make uninstall' command.
3. Make -- the logs are:
bison -v -o ./parser.cc parser.yy
if test "`cat parser.cc | sed -n 1p | sed -e 's/^.*GNU Bison \([0-9]\)[.][0-9].*$/\1/'`" = "3"; then echo "#define HAVE_BISON3 1" >> ./parser.hh; fi
g++ -g0 -O3 -DNDEBUG -DDEBUG=0 -I/usr/local/include -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -pthread -I. -I. -DPURELIB='"/usr/local/lib/pure"' -c -o pure.o pure.cc
g++ -g0 -O3 -fPIC -DNDEBUG -DDEBUG=0 -I/usr/local/include -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I. -I. -c -o expr.o expr.cc
g++ -g0 -O3 -fPIC -DNDEBUG -DDEBUG=0 -I/usr/local/include -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -pthread -I. -I. -DLIBDIR='"/usr/local/lib"' -DLIBPURE='"libpure.so.8"' -c -o interpreter.o interpreter.cc
g++ -g0 -O3 -fPIC -DNDEBUG -DDEBUG=0 -I/usr/local/include -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I. -I. -c -o matcher.o matcher.cc
g++ -g0 -O3 -fPIC -DNDEBUG -DDEBUG=0 -I/usr/local/include -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I. -I. -c -o printer.o printer.cc
g++ -g0 -O3 -fPIC -DNDEBUG -DDEBUG=0 -I/usr/local/include -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -pthread -I. -I. -DPURELIB='"/usr/local/lib/pure"' -c -o runtime.o runtime.cc
g++ -g0 -O3 -fPIC -DNDEBUG -DDEBUG=0 -I/usr/local/include -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I. -I. -c -o symtable.o symtable.cc
g++ -g0 -O3 -fPIC -DNDEBUG -DDEBUG=0 -I/usr/local/include -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I. -I. -c -o util.o util.cc
flex -o ./lexer.cc lexer.ll
g++ -g0 -O3 -fPIC -DNDEBUG -DDEBUG=0 -I/usr/local/include -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I. -I. -c -o lexer.o lexer.cc
lexer.ll: Dans la fonction « yy::parser::token_type yylex(yy::parser::semantic_type*, yy::parser::location_type*, interpreter&) »:
lexer.ll:976:18: attention: le C++17 ISO n'autorise pas le spécificateur de classe de stockage « register » [-Wregister]
976 | int count = 0;
| ^
lexer.ll: Dans la fonction membre « void Index::scan() »:
lexer.ll:1955:16: attention: le C++17 ISO n'autorise pas le spécificateur de classe de stockage « register » [-Wregister]
1955 | int level = 0;
| ^
g++ -g0 -O3 -fPIC -DNDEBUG -DDEBUG=0 -I/usr/local/include -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I. -I. -c -o parser.o parser.cc
g++ -shared -Wl,-soname,libpure.so.8 -o libpure.so.8.0 -pthread expr.o interpreter.o matcher.o printer.o runtime.o symtable.o util.o lexer.o parser.o -L/usr/local/lib -lz -lpthread -ltinfo -lm -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMMCParser -lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMJIT -lLLVMRuntimeDyld -lLLVMExecutionEngine -lLLVMCodeGen -lLLVMObjCARCOpts -lLLVMScalarOpts -lLLVMInstCombine -lLLVMLinker -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMTarget -lLLVMMC -lLLVMObject -lLLVMBitWriter -lLLVMBitReader -lLLVMCore -lLLVMSupport -L/usr/local/lib -lz -lpthread -ltinfo -lm -lm -lmpfr -lgmp
ln -sf libpure.so.8.0 libpure.so.8
ln -sf libpure.so.8.0 libpure.so
g++ -o pure -L. -pthread pure.o -lpure -L/usr/local/lib -lz -lpthread -ltinfo -lm -lm -lmpfr -lgmp -lreadline
gcc -g0 -O3 -fPIC -DNDEBUG -DDEBUG=0 -c -o pure_main.o pure_main.c
rm -f etc/pure-mode.el etc/pure-mode.el.tmp
test -d etc || mkdir etc
sed -e 's,@bindir\@,/usr/local/bin,g' -e 's,@libdir\@,/usr/local/lib,g' ./etc/pure-mode.el.in > etc/pure-mode.el.tmp
mv etc/pure-mode.el.tmp etc/pure-mode.el
On request, I can provide an English translation of the logs that are displayed in the language of my system (french).
4. checking -- the logs are
$ make check
./run-tests
Running tests.
prelude.pure: passed
test001.pure: passed
test002.pure: passed
test003.pure: passed
test004.pure: passed
test005.pure: passed
test006.pure: passed
test007.pure: passed
test008.pure: passed
test009.pure: passed
test010.pure: passed
test011.pure: passed
test012.pure: passed
test013.pure: passed
test014.pure: passed
test015.pure: passed
test016.pure: passed
test017.pure: passed
test018.pure: passed
test019.pure: passed
test020.pure: passed
test021.pure: passed
test022.pure: passed
test023.pure: passed
test024.pure: passed
test025.pure: passed
test026.pure: passed
test027.pure: passed
test028.pure: passed
test029.pure: passed
test030.pure: passed
test031.pure: passed
test032.pure: passed
test033.pure: passed
test034.pure: passed
test035.pure: passed
test036.pure: passed
test037.pure: passed
test038.pure: passed
test039.pure: passed
test040.pure: passed
test041.pure: passed
test042.pure: passed
test043.pure: passed
test044.pure: passed
test045.pure: passed
test046.pure: passed
test047.pure: passed
test048.pure: passed
test049.pure: passed
test050.pure: passed
test051.pure: passed
test052.pure: passed
test053.pure: passed
test054.pure: passed
test055.pure: passed
test056.pure: passed
test057.pure: passed
test058.pure: passed
test059.pure: passed
test060.pure: passed
test061.pure: passed
test062.pure: passed
test063.pure: passed
test064.pure: passed
test065.pure: passed
test066.pure: passed
test067.pure: passed
test068.pure: passed
test069.pure: passed
test070.pure: passed
test071.pure: passed
test072.pure: passed
test073.pure: passed
test074.pure: passed
test075.pure: passed
test076.pure: passed
test077.pure: passed
test078.pure: passed
test079.pure: passed
test080.pure: passed
test081.pure: passed
test082.pure: passed
test083.pure: passed
test084.pure: passed
test085.pure: passed
test086.pure: passed
test087.pure: passed
test088.pure: passed
test089.pure: passed
test090.pure: passed
test091.pure: passed
test092.pure: passed
test093.pure: passed
test094.pure: passed
test095.pure: passed
so everything looks good so far?
5. install -- I just sudo make install and and it does what it has to do.
6. running Pure -- don't work:
$ pure
pure: error while loading shared libraries: libpure.so.8: cannot open shared object file: No such file or directory
and
$ ./pure
pure: error while loading shared libraries: libpure.so.8: cannot open shared object file: No such file or directory
7. trying with ldconfig --
$ sudo /sbin/ldconfig
but the problem remains, I also redid the whole procedure after doing sudo /sbin/ldconfig to be sure. It didn't change anything.
Since the tests seem to be validated, I don't understand why I can't run Pure in the terminal. Have I missed a step?
Thanks for your help.