Tôi đang biên dịch một số chương trình ở đây và tôi có 4 lõi. Có cách nào để nói make
, cmake
hoặc gcc
biên dịch bằng cách sử dụng tất cả các lõi hoặc một cái gì đó để ảnh hưởng?
Tôi đang biên dịch một số chương trình ở đây và tôi có 4 lõi. Có cách nào để nói make
, cmake
hoặc gcc
biên dịch bằng cách sử dụng tất cả các lõi hoặc một cái gì đó để ảnh hưởng?
Câu trả lời:
Nếu một gói hỗ trợ, bạn có thể sử dụng -j
cờ để cho phép các công việc song song chạy, ví dụ:
make -j8
Có thể tìm thấy nhiều chi tiết hơn về cờ này trong câu hỏi Stackoverflow Tại sao make -j hoạt động tốt hơn khi nó được truyền một số lớn hơn số lõi có sẵn? .
Nếu bạn có nhiều máy, hãy cho distcc đi. Trên các máy liên quan sudo apt-get install distcc
,. Giả sử rằng máy dựng của bạn là 192.168.1.1:
trên các máy trợ giúp, chạy:
sudo distccd --log-file=/tmp/distccd.log --daemon -a 192.168.1.1
Trên máy xây dựng, trước khi chạy configure
hoặc cmake
bạn phải chỉ định máy chủ mà bạn muốn sử dụng cho quá trình xây dựng. Tùy chọn, chỉ định số lượng công việc đồng thời sau dấu gạch chéo (mặc định là 4):
export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8'
Làm cho trình biên dịch sử dụng distcc:
export PATH="/usr/lib/distcc:$PATH"
Bây giờ configure
hoặc cmake
ứng dụng và xây dựng với:
make -j$(distcc -j)
Lưu ý rằng nếu bạn đã đặt /usr/lib/distcc
hai lần vào ĐƯỜNG của mình, nó sẽ thất bại. Hãy chắc chắn /usr/lib/distcc
chỉ đặt một lần trong của bạn PATH
.
Để biết thêm chi tiết, xem các trang hướng dẫn cho distcc (1) và distccd (1) .
distccd --user nobody
. Nếu không, nó sẽ chạy dưới người dùng đã thực thi nó.