LANL-Bioinformatics / GOTTCHA

Accurate read-based metagenome characterization using a hierarchical suite of unique signatures. Please visit our homepage:
http://lanl-bioinformatics.github.io/GOTTCHA
GNU General Public License v3.0
22 stars 6 forks source link

Issues with Install.sh #17

Closed TakacsBertalan closed 1 year ago

TakacsBertalan commented 1 year ago

Hi! I am trying to install GOTTCHA and I keep running into the following error: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIE First I attempted it on Ubuntu 22.10, received the error message and after reading some suggestions about this caused by the incompatibility of some new Ubuntu versions, I ran it on a WSL on Ubuntu 20.04. I received the same error message. Interestingly, I found a similar open issue https://github.com/LANL-Bioinformatics/GOTTCHA/issues/13, but there the error message suggest recompiling with "-fPIC", not with "-fPIE" Does anybody else have a similar problem? This is the full log: Checking BWA ... BWA >=0.7 found. Done. Checking D Programming Language compiler ... D not found. Trying to download from http://downloads.dlang.org ... DMD existed. Skiping downloading . + ext/opt/dmd2/linux/bin64/dmd -O -release -op -inline src/splitrim.d /usr/bin/ld: src/splitrim.o: relocation R_X86_64_32 against .rodata' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(object__a_58c.o): relocation R_X86_64_32 against symbol_D10TypeInfo_m6initZ' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(objectb_7f4.o): relocation R_X86_64_32 against symbol _D11TypeInfo_Pv6__initZ' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(object__c_a07.o): relocation R_X86_64_32 against symbol_D11TypeInfo_Pv6initZ' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(critical436_68b.o): relocation R_X86_64_32 against symbol _D2rt9critical_16critical_sectionS2rt9critical_18D_CRITICAL_SECTION' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(lifetime_46f_7db.o): relocation R_X86_64_32 against symbol_D15TypeInfo_Shared7ClassZ' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(lifetime_470_4df.o): relocation R_X86_64_32 against symbol _D15TypeInfo_Shared7__ClassZ' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(lifetime_471_548.o): relocation R_X86_64_32 against symbol_D15TypeInfo_Shared7ClassZ' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(lifetime_480_763.o): relocation R_X86_64_32 against symbol _D15TypeInfo_Shared7__ClassZ' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(lifetime_485_6c8.o): relocation R_X86_64_32 against symbol_D15TypeInfo_Shared7ClassZ' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(lifetime_488_4cd.o): relocation R_X86_64_32 against symbol _D15TypeInfo_Shared7__ClassZ' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(lifetime_489_53b.o): relocation R_X86_64_32 against symbol_D15TypeInfo_Shared7ClassZ' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(lifetime_48a_6da.o): relocation R_X86_64_32 against symbol _D15TypeInfo_Shared7__ClassZ' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(lifetime_48d_2a1.o): relocation R_X86_64_32 against symbol_D15TypeInfo_Shared7ClassZ' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(datetime_5c0_17e.o): relocation R_X86_64_32 against .rodata' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(datetime_5d8_264.o): relocation R_X86_64_32 against.rodata' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(datetime_5da_560.o): relocation R_X86_64_32 against symbol _D3std8datetime14longMonthNamesyG12Aa' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(format_781_5b3.o): relocation R_X86_64_32 against.rodata' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(getopt_9d0_3a2.o): relocation R_X86_64_32 against .rodata' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(regex_d92_39c.o): relocation R_X86_64_32 against.rodata' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(cpuid.o): relocation R_X86_64_32 against symbol _D4core5cpuid9datacacheG5S4core5cpuid9CacheInfo' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(cpuid_a9_2db.o): relocation R_X86_64_32 against symbol_D4core5cpuid8vendorIDG12a' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(thread_12a_129.o): relocation R_X86_64_32 against symbol _D4core6thread6Thread6_locksG2G72g' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(lifetime_46e_4e2.o): relocation R_X86_64_32 against symbol_D6object8TypeInfo8postblitMxFPvZv' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(lifetime_481_7cc.o): relocation R_X86_64_32 against symbol _D15TypeInfo_Shared7__ClassZ' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(algorithm_2f_e37.o): relocation R_X86_64_32 against.rodata' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(algorithm_38_c54.o): relocation R_X86_64_32 against .rodata' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(algorithm_45_b0d.o): relocation R_X86_64_32 against.rodata' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(stdio_eb5_8cb.o): relocation R_X86_64_32 against symbol _D3std5stdio21std_stdio_static_thisUZv9stdinImplS3std5stdio4File4Impl' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(cpuid_a5_687.o): relocation R_X86_64_32 against symbol_D4core5cpuid18getcacheinfoCPUID2FNbNeZv14decipherCpuid2MFhZv3idsyG63h' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(cpuid_a6_689.o): relocation R_X86_64_32 against symbol _D4core5cpuid9datacacheG5S4core5cpuid9CacheInfo' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(thread_128_129.o): relocation R_X86_64_32 against symbol_D4core6thread6Thread6_locksG2G72g' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(critical438_70c.o): relocation R_X86_64_32 against symbol _D2rt9critical_16critical_sectionS2rt9critical_18D_CRITICAL_SECTION' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(demangle_ad_31d.o): relocation R_X86_64_32 against.rodata' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(thread_12d_48b.o): relocation R_X86_64_32 against symbol thread_suspendHandler' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(gc_2ee_8a.o): relocation R_X86_64_32 against symbol_D2gc2gc7binsizeyG11k' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: ext/opt/dmd2/linux/bin64/../lib64/libphobos2.a(gc_2f1_122.o): relocation R_X86_64_32 against symbol _D2gc2gc10notbinsizeyG11m' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: src/splitrim.o: relocation R_X86_64_PC32 against symbolfree@@GLIBC_2.2.5' can not be used when making a PIE object; recompile with -fPIE /usr/bin/ld: final link failed: bad value collect2: error: ld returned 1 exit status --- errorlevel 1 Installation failed.

Thanks, Bertalan Takács

TakacsBertalan commented 1 year ago

UPDATE: I managed to get over this error by manually installing the D programming language https://dlang.org/install.html#get_posix Now running the Install.sh script results in the following error: src/splitrim.d(1137): Error: undefined identifierStopWatch src/splitrim.d(1292): Error: undefined identifierStopWatch Installation failed.

After adding import std.datetime.stopwatch; to the splitrim.d code, this is the result: src/splitrim.d(1316): Error: function core.time.dur!"msecs".dur(long length) is not callable using argument types (Duration) src/splitrim.d(1316): cannot pass argument swTrim.peek() of type Duration to parameter long length src/splitrim.d(1338): Error: function core.time.dur!"msecs".dur(long length) is not callable using argument types (Duration) src/splitrim.d(1338): cannot pass argument swProgram.peek() of type Duration to parameter long length src/splitrim.d(1339): Error: function core.time.dur!"msecs".dur(long length) is not callable using argument types (Duration) src/splitrim.d(1339): cannot pass argument swProgram.peek() of type Duration to parameter long length Installation failed.

The issue seems to be the following, according to the StopWatch documentation https://dlang.org/phobos/std_datetime_stopwatch.html: "Unlike the other modules in std.datetime, this module is not currently publicly imported in std.datetime.package, because the old versions of this functionality which use core.time.TickDuration are in std.datetime.package and would conflict with the symbols in this module. After the old symbols have gone through the deprecation cycle and have been fully removed, then this module will be publicly imported in std.datetime.package. The old, deprecated symbols has been removed from the documentation in December 2019 and currently scheduled to be fully removed from Phobos after 2.094"

According to this documentation, I modified line 1316 of the splitrim.d script to the following: "writeln("Trim Time: ",swTrim.peek.total!"msecs", " ms");" I modified any other line where a StopWatch object was used according to this. This seem to have solved this particular problem