R неправильные ошибки класса ELF во время компиляции install.packages - PullRequest
0 голосов
/ 31 августа 2018

Я использую Ubuntu Budgie 64 bit:

lsb_release -a * * 1004

Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:    18.04
Codename:   bionic

lscpu

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Core(s) per socket:  2
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               76
Model name:          Intel(R) Celeron(R) CPU  N3050  @ 1.60GHz
Stepping:            3
CPU MHz:             2160.000
CPU max MHz:         2160.0000
CPU min MHz:         480.0000
BogoMIPS:            3200.00
Virtualization:      VT-x
L1d cache:           24K
L1i cache:           32K
L2 cache:            1024K
NUMA node0 CPU(s):   0,1
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch epb pti tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms dtherm ida arat

Я сделал новую установку R 3.5 (r-base & r-base-dev), выполнив следующие указания: https://cran.cnr.berkeley.edu

Кажется, все работает,

R

R version 3.5.1 (2018-07-02) -- "Feather Spray"
Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

Однако, когда я иду на установку новых пакетов (например, install.packages("ggplot2")), компиляция завершается ошибкой:

/usr/bin/x86_64-linux-gnu-ld: /usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so:
error loading plugin: /usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so:
wrong ELF class: ELFCLASS64
collect2: error: ld returned 1 exit status

Не удалось выполнить эту ошибку для других пакетов, которые я пытался установить (dplyr, Rcpp).

До сих пор я пытался поиграться с флагами компиляции gcc / g ++ в /usr/lib/R/etc/Makeconf, добавив флаг -m64. Но у меня все та же проблема.

ОБНОВЛЕНИЕ:

file -L /usr/bin/x86_64-linux-gnu-ld дает:

x86_64-linux-gnu-ld: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV),
dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 3.2.0,
BuildID[sha1]=8263ec62232df7411c36026e7e3e02afbfeb8b4f, stripped

ОБНОВЛЕНИЕ 2:

Я понял, что могу просто пройти через менеджер пакетов synaptic и загрузить пакеты через r-cran. Например, вместо запуска install.packages("ggplot2") в R, я просто запускаю sudo apt-get install r-cran-ggplot2

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Недавно я столкнулся с почти такой же проблемой, за исключением файла armhf liblto_plugin.so на компоновщике aarch64. Я попал в эту ситуацию после того, как я (намеренно) установил gcc: armhf и binutils: armhf на хост aarch64. Решением было установить неочевидный пакет с именем binutils-arm-linux-gnueabihf:armhf.

В соответствии с тем, что сказал @Employed Russian, вам нужно установить надлежащие binutils. Попробуйте:

sudo apt install --reinstall binutils:amd64 binutils-x86_64-linux-gnu:amd64

Если эти пакеты не найдены или не работают, попробуйте поискать правильное имя пакета через apt-файл, как я и сделал.

sudo apt install -y apt-file
sudo apt-file update
apt-file search x86_64-linux-gnu-ld
apt-file search x86_64-linux-gnu-ld.bfd
0 голосов
/ 01 сентября 2018

Ваша установка GCC испорчена.

В частности, у вас есть 32-битный компоновщик (x86_64-linux-gnu-ld), но есть 64-битный плагин LTO liblto_plugin.so.

Это предполагается , чтобы соответствовать. Вы должны выяснить, какие пакеты предоставляют два файла выше, и установить 32-битную или 64-битную версию каждого.

...