alexdobin / STAR

RNA-seq aligner
MIT License
1.77k stars 495 forks source link

ld: symbol(s) not found for architecture arm64 #2145

Closed akhst7 closed 4 weeks ago

akhst7 commented 1 month ago

Trying to compile the latest STAR 2.7.11b on M1 Mac running the latest OSX 14.5 by running a following command;

make -j8 STARforMacStatic CXX=/opt/homebrew/opt/gcc/bin/g++-14 CXXFLAGS_SIMD=-march=native

Toward the end, ld complains about arm64 symbols not found in htslib, as follows;

ld: warning: ignoring file 'htslib/libhts.a[32](zfio.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[31](vlen.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[30](thread_pool.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[29](string_alloc.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[28](sam_header.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[27](pooled_alloc.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[26](open_trace_file.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[25](md5.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[24](mFILE.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[23](files.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[22](cram_stats.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[21](cram_samtools.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[20](cram_io.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[19](cram_index.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[18](cram_encode.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[17](cram_decode.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[16](cram_codecs.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[15](vcfutils.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[14](vcf.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[13](tbx.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[12](vcf_sweep.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[11](synced_bcf_reader.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[10](sam.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[9](hts.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[8](hfile_net.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[7](hfile.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[6](faidx.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[5](bgzf.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[4](kstring.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[3](knetfile.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: ignoring file 'htslib/libhts.a[2](kfunc.o)': found architecture 'x86_64', required architecture 'arm64'

I checked brew installation is all the packages including gcc are native arm64. I did not run into this issue in the previous version, 2.7.10b_alpha_23-06-09. I downloaded the precompiled binary and get the similar error message, /opt/homebrew/Cellar/veclibfort/0.4.3/lib/libvecLibFortI.dylib (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')). libvecLibFortI.dylib is compiled for arm64. Is a target architecture of STAR 2.7.11b set to X86_64, not arm64 or even unified ? Or am I missing something ? I'd appreciate any pointers.

akhst7 commented 4 weeks ago

Ok, I solved this by bypassing installation of a bundled htslib as discussed in #1586. 2.7.11b was successfully compiled and is working.