Ubuntu uygulamalarının derlenmesi nasıl hızlanır (make, cmake, gcc)


11

Burada bazı programlar derliyorum ve 4 çekirdeğim var. Bir yol söylemek var mı make, cmakeyoksa gccetkileyen tüm çekirdek falan kullanarak derlemek?

Yanıtlar:


13

Bir paket destekliyorsa, -jparalel işlerin yürütülmesine izin vermek için bayrağı kullanabilirsiniz , örneğin:

make -j8

Bu bayrakla ilgili daha fazla ayrıntı Stackoverflow sorusunda bulunabilir. Make -j, kullanılabilir çekirdek sayısından daha büyük bir sayı iletildiğinde neden daha iyi performans gösterir? .

Dağıtılmış derleme

Birden fazla makineniz varsa distcc'yi deneyin . İlgili makinelerde sudo apt-get install distcc,. Yapı makinenizin 192.168.1.1 olduğunu varsayarsak:

  • yardımcı makinelerde şunları çalıştırın:

    sudo distccd --log-file=/tmp/distccd.log --daemon -a 192.168.1.1
    
  • Derleme makinesinde, çalıştırmadan önce configureveya cmakederleme işlemi için kullanmak istediğiniz ana bilgisayarları belirtmeniz gerekir. İsteğe bağlı olarak, bir eğik çizgiden sonra eşzamanlı iş sayısını belirtin (varsayılan olarak 4'tür):

    export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8'
    

    Derleyicinin dağıtımını kullan:

    export PATH="/usr/lib/distcc:$PATH"
    

    Şimdi configureveya cmakeuygulama ve ile inşa:

    make -j$(distcc -j)
    

    /usr/lib/distccPATH'nize iki kez koyarsanız , başarısız olacağını unutmayın. Bilgisayarınızda /usr/lib/distccyalnızca bir kez ayarladığınızdan emin olun PATH.

Daha fazla ayrıntı için distcc (1) ve distccd (1) kılavuz sayfalarına bakın .


Aman Tanrım, J iyidir. 15 dakikadan 1 dakikadan daha azına gittim. Teşekkürler L.
Luis Alvarado

Distcc ile daha hızlı olabilir, PHP derlemesi 2 dakika içinde yapıldı, çekirdek 3 dakika içinde yapıldı (üç i5 makine)
Lekensteyn

İşe geldiğimde distcc ile deneyeceğim. Bu konuda dün benzer bir soru soruyordu. Belki burada yardımcı olabilirsiniz: askubuntu.com/questions/106810/…
Luis Alvarado

Kök olarak distccd çalıştırmak kötü bir plan gibi görünüyor. Birkaç nedenden dolayı kullanmadım ama yaptığımda kök kullanamadım çünkü o makinelerde iznim yoktu.
ams

@ams Kök olarak çalıştırmanız gerekmez. Kök olarak çalıştırırsanız ve kullanıcıları değiştirmek istiyorsanız, tuşunu kullanın distccd --user nobody. Aksi takdirde, yürüten kullanıcının altında çalışır.
Lekensteyn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.