Saya mengkompilasi beberapa program di sini dan saya memiliki 4 core. Apakah ada cara untuk mengatakan make
, cmake
atau gcc
mengkompilasi menggunakan semua core atau sesuatu untuk mempengaruhi itu?
Saya mengkompilasi beberapa program di sini dan saya memiliki 4 core. Apakah ada cara untuk mengatakan make
, cmake
atau gcc
mengkompilasi menggunakan semua core atau sesuatu untuk mempengaruhi itu?
Jawaban:
Jika suatu paket mendukungnya, Anda dapat menggunakan -j
bendera untuk memungkinkan pekerjaan paralel berjalan, misalnya:
make -j8
Detail lebih lanjut tentang flag ini dapat ditemukan di pertanyaan Stackoverflow. Mengapa make-j berkinerja lebih baik ketika diberikan angka yang lebih besar dari jumlah core yang tersedia? .
Jika Anda memiliki banyak mesin, cobalah distcc . Pada mesin yang terlibat sudo apt-get install distcc
,. Dengan asumsi bahwa mesin build Anda adalah 192.168.1.1:
pada mesin helper, jalankan:
sudo distccd --log-file=/tmp/distccd.log --daemon -a 192.168.1.1
Di mesin build, sebelum menjalankan configure
atau cmake
Anda harus menentukan host yang ingin Anda gunakan untuk proses build. Secara opsional, tentukan jumlah pekerjaan simultan setelah garis miring (default ke 4):
export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8'
Jadikan kompiler menggunakan distcc:
export PATH="/usr/lib/distcc:$PATH"
Sekarang configure
atau cmake
aplikasi dan bangun dengan:
make -j$(distcc -j)
Perhatikan bahwa jika Anda memasukkan /usr/lib/distcc
dua kali dalam PATH Anda, itu akan gagal. Pastikan untuk mengatur /usr/lib/distcc
hanya sekali di PATH
.
Untuk lebih jelasnya, lihat halaman manual untuk distcc (1) dan distccd (1) .
distccd --user nobody
. Kalau tidak, itu akan berjalan di bawah pengguna yang menjalankannya.