У меня есть сценарий R, который пытается установить много пакетов (все пропущены, кроме одного):
install.packages("zoo")
Тогда я бегу
Rscript my_r.r
Затем я заметил, что он попытается скомпилировать код на C:
gcc -m64 -std=gnu99 -I"/usr/include/R" -DNDEBUG -I../inst/include -I"/latest/rsg_comm/r_packages/zoo/include" -I/usr/local/include -fpic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -c any.c -o any.o
Есть ли способ попросить, чтобы все пакеты были скомпилированы локально с -O3
и -mtune=native
?
Я заметил, что есть аналогичное сообщение, в котором предлагается использовать ~/R/.Makevars
. Но похоже
- он переопределит все флаги компилятора, а не только те 2, которые я указал. Есть возможность указать?
- Мне нужно загрузить исходный код каждого источника, что не так удобно, как просто использовать
install.packages("package_name")
, который будет определять последнюю версию, проходить через зеркало и т. Д. Или есть удобный способ?
-g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe
флаги и нет проблем с пакетом zoo, хотя я использую macOS, поэтому YMMV (stackoverflow .com / a / 65334247/12957340). - person jared_mamrot   schedule 16.03.2021zoo
сCFLAGS= -O3 -Wall -mtune=native -march=native
вMakevars
. Он заменил все CFLAGS, полностью указанные в пакетеzoo
, который указывает-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic
. Я мог бы вручную настроить свойMakevars
, чтобы включить оставшиеся флаги. Но это болезненно, так как мне нужно установить 20+ пакетов. Есть идеи, как автоматически объединитьCFLAGS
? - person HCSF   schedule 16.03.2021Makevars
, чтобы добавить свойCFLAGS
к существующемуCFLAGS
, и ожидаю, чтоgcc
примет последний флаг в случае конфликта (согласно сообщению). Спасибо! - person HCSF   schedule 16.03.2021