Setelah membaca dan mencoba instruksi kompiler untuk macOS, saya bertanya-tanya apakah gcc
dari homebrew akan menjadi alternatif yang lebih baik daripada llvm
.
Seperti yang dinyatakan di wiki, kompiler yang mendukung openmp menyebabkan masalah dengan paket lain. Cukup merepotkan untuk mengomentari compiler llvm setiap saat jika seseorang ingin mengkompilasi paket lain.
Saat ini saya menggunakan penyiapan berikut dengan gcc
diinstal melalui brew install gcc
. Sejauh ini tidak ada masalah untuk paket apa pun.
CXX_STD = CXX14
CC=ccache /usr/local/bin/gcc-9
CC11=ccache /usr/local/bin/gcc-9
CC14=ccache /usr/local/bin/gcc-9
CXX=ccache /usr/local/bin/g++-9
CXX11=ccache /usr/local/bin/g++-9
CXX14=ccache /usr/local/bin/g++-9
## -O3 should be faster than -O2 (default) level optimisation ..
CFLAGS=-g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe
CXXFLAGS=-g -O3 -Wall -pedantic -std=c++11 -mtune=native -pipe
Selain itu, saya menggunakan ccache
seperti yang Anda lihat. Dikombinasikan dengan pengaturan ~/.ccache/ccache.conf
bawah ini, saya memiliki pengaturan kompiler C yang kuat yang mendukung caching.
max_size = 5.0G
# important for R CMD INSTALL *.tar.gz as tarballs are expanded freshly -> fresh ctime
sloppiness = include_file_ctime
# also important as the (temp.) directory name will differ
hash_dir = false
(Bagian ccache
diambil dari kiriman ini oleh Dirk.)
Saya menggunakan pendekatan yang disarankan di https://github.com/rmacoslib/r-macos-rtools . Saya menggunakan clang7 yang disediakan di https://cloud.r-project.org/bin/macosx/tools dan hanya perlu menentukan yang berikut di ~/.R/Makevars
:
CC=/usr/local/clang7/bin/clang
CXX=/usr/local/clang7/bin/clang++
CXX1X=/usr/local/clang7/bin/clang++
CXX11=/usr/local/clang7/bin/clang++
CXX14=/usr/local/clang7/bin/clang++
CXX17=/usr/local/clang7/bin/clang++
LDFLAGS=-L/usr/local/clang7/lib
Dan semuanya bekerja dengan lancar dan konsisten.
Saya tidak yakin mengapa instruksi macOS terlihat begitu rumit, yang dengan mudah akan membuat pengguna pemula yang menggunakan macOS mengalami kesulitan bahkan menginstal data.table
dari sumber.
Bagi saya, pendekatan gcc
adalah yang tercepat dan paling stabil sejauh ini.
Saya tidak yakin apa peringatan lain yang mungkin diperkenalkan pada macOS. 🤔
@jangorecki Siapa yang bertanggung jawab untuk bagian terkait C di {data.table} atau mungkin memiliki pengetahuan yang lebih mendalam tentang apa yang terjadi di balik layar?
gcc
adalah kompiler yang digunakan pada semua distro Linux utama, adakah yang mencegahnya untuk mengaturnya sebagai default pada macOS?
Tidak ada satu orang pun yang bertanggung jawab atas bagian C dari DT. Matt dan Arun menulis sebagian besar materi C. AFAIR @arunsrinivasan ada di macOS jadi pandangannya tentang masalah ini bisa sangat membantu.
Saya lebih suka menggunakan gcc sendiri, tetapi kebetulan clang adalah yang default di MacOS. Mencoba mengubah kompiler default secara global untuk pengguna Mac akan menyebabkan lebih banyak masalah daripada penyelesaiannya. Jadi saya tidak berpikir mengubah default adalah cara yang harus dilakukan.
Sekarang https://github.com/Rdatatable/data.table/pull/4735 digabungkan (dan sudah dipublikasikan ke CRAN sebagai 1.13.2), pengguna seharusnya dapat lebih mudah menyesuaikan build data.table mereka. Oleh karena itu, ini harus menangani kasus penggunaan Anda. Jika tidak, beri tahu kami.
Hai @ pat-s. Terima kasih atas masukan Anda di sini. Saya hanya akan menambahkan bahwa jika instruksi MacOS di halaman Instalasi kami dapat disederhanakan, itu akan sangat disambut baik. Silakan lanjutkan dan ubah sendiri langsung ke wiki. Tidak ada izin yang diperlukan untuk mengubah wiki, itulah alasan kami menjadikannya wiki.
Komentar yang paling membantu
Saya menggunakan pendekatan yang disarankan di https://github.com/rmacoslib/r-macos-rtools . Saya menggunakan clang7 yang disediakan di https://cloud.r-project.org/bin/macosx/tools dan hanya perlu menentukan yang berikut di
~/.R/Makevars
:Dan semuanya bekerja dengan lancar dan konsisten.
Saya tidak yakin mengapa instruksi macOS terlihat begitu rumit, yang dengan mudah akan membuat pengguna pemula yang menggunakan macOS mengalami kesulitan bahkan menginstal
data.table
dari sumber.