Как установить 32-битные пакеты R в 64-битной ОС - PullRequest
0 голосов
/ 24 января 2020

ОС: Ubuntu 18.04, 64 бита

R: 3.5.3 (2019-03-11) - "Великая правда" - i686-p c - linux -gnu (32-битная) )

Когда я пытаюсь установить install.packages ("odb c") ", он не может установить свои зависимости (например, rlang):

gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -I./lib/     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-Ipr5al/r-base-3.5.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c capture.c -o capture.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -I./lib/     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-Ipr5al/r-base-3.5.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c export.c -o export.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -I./lib/     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-Ipr5al/r-base-3.5.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c internal.c -o internal.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -I./lib/     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-Ipr5al/r-base-3.5.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c lib.c -o lib.o
gcc -std=gnu99 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o rlang.so capture.o export.o internal.o lib.o -L/usr/lib/R/lib -lR
/usr/bin/ld: skipping incompatible /usr/lib/R/lib/libR.so when searching for -lR
/usr/bin/ld: skipping incompatible /usr/lib/R/lib/libR.so when searching for -lR
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libR.so when searching for -lR
/usr/bin/ld: skipping incompatible /usr/lib/../lib/libR.so when searching for -lR
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/7/../../../libR.so when searching for -lR
/usr/bin/ld: skipping incompatible //usr/lib/libR.so when searching for -lR
/usr/bin/ld: cannot find -lR
collect2: error: ld returned 1 exit status
/usr/share/R/share/make/shlib.mk:6: recipe for target 'rlang.so' failed
make: *** [rlang.so] Error 1
ERROR: compilation failed for package ‘rlang’
* removing ‘/home/dani/R/i686-pc-linux-gnu-library/3.5/rlang’

Я хочу подключить R к базе данных Firebird, для этого я использую unixODB C, суперсервер Firebird, Firebird ODB C драйвер и Rstudio. У меня был плохой опыт работы с 64-битной версией Firebird ODB C (моя rstudio не работала с ним должным образом), поэтому я перешел на 32-битную версию, даже если я использую 64-битную ОС, предполагалось, что Ubuntu multiarch чтобы разрешить это (?).

Я попытался установить для CFLAGS и LDFLAGS значение "-m32".

export CFLAGS="-m32"
echo $CFLAGS
-m32
export LDFLAGS="-m32"
echo $LDFLAGS
-m32

file /usr/lib/R/lib/libR.so
/usr/lib/R/lib/libR.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=c6d432327945e2be0de490df7c29b431f36ce7b3, stripped

G CC функция пытается скомпилировать файлы библиотеки в 64-битные по умолчанию добавление флага '-m32' при компиляции простой программы c компилируется в 32-битные, но я не могу добавить этот флаг, так как R сам выполняет вызовы.

...