ພາສາອັງກິດພາສາຝຣັ່ງແອສປາໂຍນ

Ad


OnWorks favicon

distcc - ອອນລາຍໃນຄລາວ

ແລ່ນ distcc ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີຜ່ານ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ນີ້ແມ່ນຄໍາສັ່ງ distcc ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


distcc - ແຈກຢາຍ C/C++/ObjC compiler ດ້ວຍການຂະຫຍາຍ distcc-pump

ສະຫຼຸບສັງລວມ


distcc [COMPILER ຕົວເລືອກ]

distcc [COMPILER ຕົວເລືອກ]

[COMPILER ຕົວເລືອກ]

distcc [DISTCC ຕົວເລືອກ]

ລາຍລະອຽດ


distcc ແຈກຢາຍການລວບລວມລະຫັດ C ໃນຫຼາຍໆເຄື່ອງໃນເຄືອຂ່າຍ. distcc
ຄວນສ້າງຜົນໄດ້ຮັບຄືກັນກັບການລວບລວມທ້ອງຖິ່ນ, ມັນງ່າຍດາຍໃນການຕິດຕັ້ງແລະ
ໃຊ້, ແລະມັນມັກຈະໄວກວ່າການລວບລວມທ້ອງຖິ່ນ.

ສະ​ບັບ​ນີ້​ປະ​ກອບ​ມີ distcc ທົ່ງ​ພຽງ​ເຊັ່ນ​ດຽວ​ກັນ​ກັບ​ການ​ປັບ​ປຸງ​ທີ່​ເອີ້ນ​ວ່າ​ຮູບ​ແບບ pump ຫຼື​
distcc-pump.

ສໍາລັບແຕ່ລະວຽກ, distcc ໃນຮູບແບບທໍາມະດາສົ່ງລະຫັດແຫຼ່ງ preprocessed ຄົບຖ້ວນສົມບູນແລະ
compiler arguments ໃນທົ່ວເຄືອຂ່າຍຈາກລູກຄ້າໄປຫາເຄື່ອງແມ່ຂ່າຍການລວບລວມ. ໃນປັ໊ມ
ໂຫມດ, distcc ສົ່ງລະຫັດແຫຼ່ງແລະລວມເອົາໄຟລ໌ header recursively (ຍົກເວັ້ນເຫຼົ່ານັ້ນ
ຈາກໄດເລກະທໍລີ header ຂອງລະບົບໃນຕອນຕົ້ນ), ດັ່ງນັ້ນທັງສອງ preprocessing ແລະ compilation
ສາມາດເກີດຂຶ້ນໃນເຄື່ອງແມ່ຂ່າຍການລວບລວມ. ນີ້ເລັ່ງການຈັດສົ່ງການລວບລວມໂດຍ
ເຖິງຄໍາສັ່ງຂອງຂະຫນາດຫຼາຍກວ່າ distcc ທໍາມະດາ.

ການລວບລວມແມ່ນຂັບເຄື່ອນໂດຍເຄື່ອງລູກຄ້າ, ເຊິ່ງປົກກະຕິແມ່ນບ່ອນເຮັດວຽກຂອງຜູ້ພັດທະນາ
ຫຼືແລັບທັອບ. ລູກຄ້າ distcc ແລ່ນຢູ່ໃນເຄື່ອງນີ້, ເຊັ່ນດຽວກັນກັບການຜະລິດ, preprocessor (ຖ້າ
ໂຫມດປັ໊ມຂອງ distcc ບໍ່ຖືກນໍາໃຊ້), ຕົວເຊື່ອມຕໍ່, ແລະຂັ້ນຕອນອື່ນໆຂອງຂະບວນການກໍ່ສ້າງ. ໃດ
ຈໍານວນເຄື່ອງຈັກອາສາສະຫມັກເຮັດຫນ້າທີ່ເປັນເຄື່ອງແມ່ຂ່າຍລວບລວມແລະຊ່ວຍລູກຄ້າໃນການສ້າງ
ໂຄງ​ການ​, ໂດຍ​ການ​ແລ່ນ​ distccd(1​) daemon, C compiler ແລະ assembler ຕາມຄວາມຕ້ອງການ.

distcc ສາມາດແລ່ນຜ່ານຊ່ອງສຽບ TCP (ຢູ່ໃນພອດ 3632 ໂດຍຄ່າເລີ່ມຕົ້ນ), ຫຼືຜ່ານອຸໂມງ.
ຄໍາສັ່ງເຊັ່ນ ssh(1). ສໍາລັບການເຊື່ອມຕໍ່ TCP, ອາສາສະຫມັກຕ້ອງດໍາເນີນການ distccd(1) daemon
ໂດຍກົງຫຼືຈາກ inetd. ສໍາລັບການເຊື່ອມຕໍ່ SSH distccd ຕ້ອງໄດ້ຮັບການຕິດຕັ້ງແຕ່ຄວນ
ບໍ່ ຟັງການເຊື່ອມຕໍ່.

ການເຊື່ອມຕໍ່ TCP ຄວນຖືກນໍາໃຊ້ໃນເຄືອຂ່າຍທີ່ປອດໄພເທົ່ານັ້ນເພາະວ່າບໍ່ມີຜູ້ໃຊ້
ການຢືນຢັນ ຫຼືການປົກປ້ອງລະຫັດແຫຼ່ງ ຫຼືວັດຖຸ. ປົກກະຕິການເຊື່ອມຕໍ່ SSH ແມ່ນ 25%
ຊ້າລົງເນື່ອງຈາກໂປເຊດເຊີ overhead ສໍາລັບການເຂົ້າລະຫັດ, ເຖິງແມ່ນວ່ານີ້ສາມາດແຕກຕ່າງກັນຢ່າງຫຼວງຫຼາຍ
ຂຶ້ນຢູ່ກັບ CPUs, ເຄືອຂ່າຍແລະໂຄງການທີ່ກໍາລັງສ້າງ.

distcc ມີຈຸດປະສົງເພື່ອໃຊ້ກັບ GNU Make's -j ທາງເລືອກ, ເຊິ່ງດໍາເນີນການ compiler ຫຼາຍ
ຂະບວນການພ້ອມໆກັນ. distcc ກະຈາຍວຽກໄປທົ່ວທັງ CPU ທ້ອງຖິ່ນ ແລະທາງໄກ.
ເນື່ອງຈາກວ່າ distcc ສາມາດແຈກຢາຍວຽກງານສ່ວນໃຫຍ່ໃນທົ່ວເຄືອຂ່າຍ, ສູງກວ່າ
ລະດັບ concurrency ສາມາດຖືກນໍາໃຊ້ຫຼາຍກ່ວາການກໍ່ສ້າງໃນທ້ອງຖິ່ນ. ຕາມກົດລະບຽບ, ໄດ້ -j ມູນຄ່າ
ຄວນຖືກຕັ້ງເປັນປະມານສອງເທົ່າຂອງຈໍານວນທັງຫມົດຂອງ CPU ຂອງເຄື່ອງແມ່ຂ່າຍທີ່ມີຢູ່ແຕ່ຂຶ້ນກັບ
ຂໍ້​ຈໍາ​ກັດ​ລູກ​ຄ້າ​. ການຕັ້ງຄ່ານີ້ອະນຸຍາດໃຫ້ມີການແຊກແຊງສູງສຸດຂອງວຽກງານທີ່ຖືກບລັອກ
ລໍຖ້າ disk ຫຼືເຄືອຂ່າຍ IO. ໃຫ້ສັງເກດວ່າ distcc ຍັງສາມາດເຮັດວຽກກັບການຄວບຄຸມການກໍ່ສ້າງອື່ນໆ
ເຄື່ອງມື, ເຊັ່ນ: SCons, ບ່ອນທີ່ມີການປັບຄ່າ concurrency ທີ່ຄ້າຍຄືກັນ.

ໄດ້ -j ການຕັ້ງຄ່າ, ໂດຍສະເພາະສໍາລັບມູນຄ່າຂະຫນາດໃຫຍ່ຂອງ -j, ຕ້ອງຄຳນຶງເຖິງການໂຫຼດ CPU
ລູກຄ້າ. ອາດຈະຕ້ອງການມາດຕະການເພີ່ມເຕີມເພື່ອຫຼຸດຜ່ອນການໂຫຼດຂອງລູກຄ້າ. ຍົກ​ຕົວ​ຢ່າງ,
ການ​ເຊື່ອມ​ຕໍ່​ພ້ອມ​ກັນ​ຄວນ​ຈະ​ໄດ້​ຮັບ​ການ​ຄວບ​ຄຸມ​ຢ່າງ​ຮຸນ​ແຮງ​ໂດຍ​ການ​ນໍາ​ໃຊ້ locks ຊ່ວຍ​. ຜົນກະທົບຂອງ
ກິດຈະກໍາກໍ່ສ້າງອື່ນໆ, ເຊັ່ນ Java compilation ໃນເວລາທີ່ການສ້າງລະຫັດປະສົມ, ຄວນຈະເປັນ
ພິຈາລະນາ. ໄດ້ --localslots_cpp ພາລາມິເຕີແມ່ນກໍານົດໄວ້ໃນຕອນຕົ້ນເປັນ 16. ນີ້ຈໍາກັດການ
ຈໍານວນຂະບວນການພ້ອມກັນທີ່ດໍາເນີນການ preprocessing ໃນໂຫມດ distcc ທໍາມະດາ (ບໍ່ແມ່ນປັ໊ມ).
ເພາະສະນັ້ນ, ຂະຫນາດໃຫຍ່ກວ່າ -j ຄ່າທີ່ສູງກວ່າ 16 ອາດຈະຖືກໃຊ້ໂດຍບໍ່ມີການໂຫຼດເກີນຂອງລູກຂ່າຍ CPU ດຽວ
ເນື່ອງຈາກການປຸງແຕ່ງກ່ອນ. ມູນຄ່າຂະຫນາດໃຫຍ່ດັ່ງກ່າວອາດຈະເລັ່ງພາກສ່ວນຂອງການກໍ່ສ້າງທີ່ບໍ່ໄດ້
ກ່ຽວຂ້ອງກັບການລວບລວມ C, ແຕ່ພວກມັນອາດຈະບໍ່ເປັນປະໂຫຍດຕໍ່ປະສິດທິພາບ distcc ໃນຮູບແບບທໍາມະດາ.

ໃນທາງກົງກັນຂ້າມ, ການນໍາໃຊ້ຮູບແບບປັ໊ມແລະເວົ້າວ່າ 40 ເຄື່ອງແມ່ຂ່າຍ, ການຕັ້ງຄ່າຂອງ -j80 ຫຼືໃຫຍ່ກວ່າອາດຈະເປັນ
ເຫມາະສໍາລັບລູກຄ້າ CPU ດຽວ.

ມັນແນະນໍາໃຫ້ທ່ານຕິດຕັ້ງສະບັບ compiler ດຽວກັນຢູ່ໃນເຄື່ອງທັງຫມົດ
ການ​ເຂົ້າ​ຮ່ວມ​ໃນ​ການ​ກໍ່​ສ້າງ​. ຄອມພີວເຕີທີ່ບໍ່ເຂົ້າກັນໄດ້ອາດຈະເຮັດໃຫ້ເກີດການລວບລວມຫຼືການເຊື່ອມຕໍ່ທີ່ລຶກລັບ
ຄວາມລົ້ມເຫລວ.

ດ່ວນ


1 ສໍາລັບແຕ່ລະເຄື່ອງ, ດາວໂຫລດ distcc, unpack, ແລະຕິດຕັ້ງ.

2 ໃນແຕ່ລະເຄື່ອງແມ່ຂ່າຍ, ດໍາເນີນການ distccd --daemon ກັບ -- ອະ​ນຸ​ຍາດ​ໃຫ້​ ທາງເລືອກໃນການຈໍາກັດ
ເຂົ້າເຖິງ.

3 ໃສ່ຊື່ຂອງເຄື່ອງແມ່ຂ່າຍໃນສະພາບແວດລ້ອມຂອງທ່ານ:
$ export DISTCC_HOSTS='localhost ສີແດງ ສີຂຽວສີຟ້າ'

4 ສ້າງ!
$ make -j8 CC = distcc

ດ່ວນ FOR DISTCC-PUMP MODE


ດໍາເນີນການດັ່ງຂ້າງເທິງ, ແຕ່ໃນຂັ້ນຕອນທີ 3, ລະບຸວ່າເຈົ້າພາບຫ່າງໄກສອກຫຼີກແມ່ນເພື່ອປະຕິບັດພາລະຂອງ
preprocessing ແລະວ່າໄຟລ໌ທີ່ສົ່ງຜ່ານເຄືອຂ່າຍຄວນຈະຖືກບີບອັດ:

$ export DISTCC_HOSTS='--randomize localhost red,cpp,lzo green,cpp,lzo
ສີຟ້າ,cpp,lzo'

ໄດ້ --randomize ທາງເລືອກບັງຄັບໃຊ້ເອກະພາບຂອງເຄື່ອງແມ່ຂ່າຍລວບລວມ. ໃນຂະນະທີ່ທ່ານຈະໄດ້ຮັບ
ຜົນປະໂຫຍດບາງຢ່າງຈາກໂຫມດປັ໊ມຂອງ distcc ມີພຽງແຕ່ເຄື່ອງແມ່ຂ່າຍຈໍານວນຫນ້ອຍ, ທ່ານໄດ້ຮັບຜົນປະໂຫຍດເພີ່ມຂຶ້ນ
ກັບ CPU ຂອງເຄື່ອງແມ່ຂ່າຍຫຼາຍ (ເຖິງຫຼາຍຮ້ອຍຄົນ!). ຫໍ່ການກໍ່ສ້າງຂອງທ່ານພາຍໃນຄໍາສັ່ງ pump,
ນີ້ສົມມຸດວ່າ 10 ເຄື່ອງແມ່ຂ່າຍ:

$ distcc-pump make -j20 CC=distcc

ວິທີການ PLAIN (ບໍ່ແມ່ນປ້ຳ) DISTCC WORKS


distcc ພຽງແຕ່ເຄີຍແລ່ນ compiler ແລະ assembler ຫ່າງໄກສອກຫຼີກ. ດ້ວຍ distcc ທໍາມະດາ, ໄດ້
ໂປເຊດເຊີ preprocessor ຕ້ອງແລ່ນຢູ່ໃນທ້ອງຖິ່ນສະເຫມີເພາະວ່າມັນຈໍາເປັນຕ້ອງເຂົ້າເຖິງໄຟລ໌ header ຕ່າງໆ
ເຄື່ອງທ້ອງຖິ່ນທີ່ອາດຈະບໍ່ມີ, ຫຼືອາດຈະບໍ່ຄືກັນ, ຢູ່ໃນອາສາສະຫມັກ. ໄດ້
linker ເຊັ່ນດຽວກັນຕ້ອງການກວດເບິ່ງຫ້ອງສະຫມຸດແລະໄຟລ໌ວັດຖຸ, ແລະດັ່ງນັ້ນຈິ່ງຕ້ອງດໍາເນີນການຢູ່ໃນທ້ອງຖິ່ນ.

compiler ແລະ assembler ເອົາພຽງແຕ່ໄຟລ໌ input ດຽວ (ແຫຼ່ງ preprocessed) ແລະ
ຜະລິດຜົນຜະລິດດຽວ (ໄຟລ໌ວັດຖຸ). distcc ສົ່ງທັງສອງໄຟລ໌ນີ້ໄປທົ່ວ
ເຄືອ​ຂ່າຍ​ແລະ​ດັ່ງ​ນັ້ນ​ສາ​ມາດ​ດໍາ​ເນີນ​ການ compiler/assembler ຫ່າງ​ໄກ​ສອກ​ຫຼີກ​.

ໂຊກດີ, ສໍາລັບໂຄງການສ່ວນໃຫຍ່ທີ່ແລ່ນ preprocessor ແມ່ນຂ້ອນຂ້າງລາຄາຖືກ, ແລະ
linker ຖືກເອີ້ນວ່າຂ້ອນຂ້າງບໍ່ຄ່ອຍ, ດັ່ງນັ້ນວຽກງານສ່ວນໃຫຍ່ສາມາດແຈກຢາຍໄດ້.

distcc ກວດເບິ່ງເສັ້ນຄໍາສັ່ງຂອງມັນເພື່ອກໍານົດວ່າໄລຍະໃດເຫຼົ່ານີ້ກໍາລັງຖືກເອີ້ນ, ແລະ
ບໍ່ວ່າວຽກສາມາດແຈກຢາຍໄດ້.

ວິທີການ DISTCC-PUMP MODE WORKS


ໃນໂຫມດປັ໊ມ, distcc ແລ່ນເຄື່ອງປະມວນຜົນກ່ອນໄລຍະໄກຄືກັນ. ເພື່ອເຮັດສິ່ງນີ້, preprocessor ຕ້ອງ
ມີການເຂົ້າເຖິງໄຟລ໌ທັງຫມົດທີ່ມັນຈະເຂົ້າເຖິງໄດ້ຖ້າຫາກວ່າໄດ້ດໍາເນີນການຢູ່ໃນທ້ອງຖິ່ນ. ໃນ
ໂຫມດປັ໊ມ, ດັ່ງນັ້ນ, distcc ລວບລວມທຸກສ່ວນຫົວທີ່ລວມເອົາ recursively, ຍົກເວັ້ນ
ອັນທີ່ເປັນສ່ວນຫົວຂອງລະບົບເລີ່ມຕົ້ນ, ແລະສົ່ງພວກມັນພ້ອມກັບໄຟລ໌ແຫຼ່ງໄປຫາ
ເຊີບເວີການລວບລວມ.

ໃນໂຫມດ distcc-pump, ເຊີບເວີ unpack ຊຸດຂອງໄຟລ໌ແຫຼ່ງທັງຫມົດໃນເວລາຊົ່ວຄາວ
ໄດເລກະທໍລີ, ເຊິ່ງປະກອບດ້ວຍຕົ້ນໄມ້ໄດເລກະທໍລີທີ່ສະທ້ອນສ່ວນຂອງລະບົບໄຟລ໌ທີ່
ມີຄວາມກ່ຽວຂ້ອງກັບການປຸງແຕ່ງກ່ອນ, ລວມທັງການເຊື່ອມຕໍ່ສັນຍາລັກ.

ຫຼັງຈາກນັ້ນ compiler ແມ່ນແລ່ນຈາກເສັ້ນທາງໃນໄດເລກະທໍລີຊົ່ວຄາວທີ່ກົງກັບ
ໄດເລກະທໍລີທີ່ເຮັດວຽກໃນປະຈຸບັນຢູ່ໃນລູກຄ້າ. ເພື່ອຊອກຫາ ແລະສົ່ງໄຟລ໌ຫຼາຍຮ້ອຍໄຟລ໌
ທີ່ມັກຈະເປັນສ່ວນຫນຶ່ງຂອງການລວບລວມດຽວ, ຮູບແບບປັ໊ມໃຊ້ການເພີ່ມການລວມ
ຂັ້ນຕອນການວິເຄາະ. ລວມເອົາເຊີບເວີແມ່ນໂຄງການ Python ທີ່ປະຕິບັດສິ່ງນີ້
ສູດການຄິດໄລ່. ຄໍາສັ່ງ distcc-pump ເລີ່ມລວມເຄື່ອງແມ່ຂ່າຍເພື່ອວ່າຕະຫຼອດການກໍ່ສ້າງ
ມັນສາມາດຕອບຄໍາຖາມໄດ້ໂດຍຄໍາສັ່ງ distcc.

ເຊີບເວີລວມເອົາການວິເຄາະສະຖິດຂອງພາສາມະຫາພາກເພື່ອຈັດການກັບເງື່ອນໄຂ
ການລວບລວມແລະການຄິດໄລ່ປະກອບມີ. ມັນໃຊ້ຄຸນສົມບັດທີ່ເມື່ອໄຟລ໌ຫົວທີ່ໃຫ້ມາ
ໄດ້ຖືກວິເຄາະແລ້ວສໍາລັບການລວມ, ມັນບໍ່ຈໍາເປັນທີ່ຈະເຮັດແນວນັ້ນອີກເທື່ອຫນຶ່ງຖ້າຫາກວ່າທັງຫມົດປະກອບມີ
ທາງເລືອກ (-I's) ບໍ່ປ່ຽນແປງ (ພ້ອມກັບເງື່ອນໄຂອື່ນໆ).

ສໍາລັບການກໍ່ສ້າງຂະຫນາດໃຫຍ່, ໄຟລ໌ header ແມ່ນລວມ, ໂດຍສະເລ່ຍ, ຫຼາຍຮ້ອຍຄັ້ງໃນແຕ່ລະ. ກັບ
ຮູບແບບ distcc-pump ແຕ່ລະໄຟລ໌ດັ່ງກ່າວຖືກວິເຄາະພຽງແຕ່ສອງສາມເທື່ອ, ບາງທີພຽງແຕ່ຄັ້ງດຽວ, ແທນທີ່ຈະ
ຖືກປຸງແຕ່ງກ່ອນຫຼາຍຮ້ອຍຄັ້ງ. ນອກຈາກນີ້, ແຕ່ລະແຫຼ່ງຫຼື header ໄຟລ໌ແມ່ນໃນປັດຈຸບັນ
ບີບອັດພຽງຄັ້ງດຽວ, ເພາະວ່າເຊີບເວີລວມຈື່ຈໍາໄຟລ໌ທີ່ຖືກບີບອັດ. ເປັນ
ຜົນໄດ້ຮັບ, ເວລາທີ່ໃຊ້ສໍາລັບການກະກຽມການລວບລວມອາດຈະຫຼຸດລົງເຖິງຄໍາສັ່ງຂອງຂະຫນາດ
ໃນໄລຍະການປະມວນຜົນກ່ອນຂອງ distcc ທໍາມະດາ.

ເນື່ອງຈາກວ່າ distcc ໃນຮູບແບບປັ໊ມສາມາດຍູ້ໄຟລ໌ອອກໄດ້ໄວຂຶ້ນປະມານສິບເທົ່າ, ກໍ່ສ້າງ
ຄວາມໄວອາດຈະເພີ່ມຂຶ້ນ 3X ຫຼືຫຼາຍກວ່ານັ້ນສໍາລັບການກໍ່ສ້າງຂະຫນາດໃຫຍ່ເມື່ອທຽບກັບໂຫມດ distcc ທໍາມະດາ.

ຄວາມຕ້ອງການ FOR PUMP MODE


ການນໍາໃຊ້ຮູບແບບປັ໊ມຮຽກຮ້ອງໃຫ້ທັງລູກຄ້າແລະເຄື່ອງແມ່ຂ່າຍໃຊ້ການປ່ອຍ 3.0 ຫຼືໃຫມ່ກວ່າຂອງ distcc ແລະ
distccd (ຕາມລໍາດັບ).

ການເພີ່ມຂຶ້ນລວມມີການວິເຄາະຂອງ distc-pump mode rests ສຸດສົມມຸດຕິຖານພື້ນຖານ
ໄຟລ໌ແຫຼ່ງ ແລະສ່ວນຫົວນັ້ນບໍ່ປ່ຽນແປງໃນລະຫວ່າງຂະບວນການສ້າງ. ການກໍ່ສ້າງສະລັບສັບຊ້ອນບໍ່ຫຼາຍປານໃດ
ລະບົບ, ເຊັ່ນວ່າສໍາລັບ Linux kernel 2.6, ບໍ່ຂ້ອນຂ້າງຕອບສະຫນອງຄວາມຕ້ອງການນີ້. ເຖິງ
ເອົາຊະນະບັນຫາດັ່ງກ່າວ, ແລະກໍລະນີແຈອື່ນໆເຊັ່ນ filepaths ຢ່າງແທ້ຈິງໃນປະກອບມີ, ເບິ່ງ
ໄດ້ include_server(1​) ຫນ້າຜູ້ຊາຍ.

ສົມມຸດຕິຖານທີ່ສໍາຄັນອີກອັນຫນຶ່ງແມ່ນວ່າການລວມເອົາການຕັ້ງຄ່າຂອງເຄື່ອງຈັກທັງຫມົດຈະຕ້ອງເປັນ
ຄືກັນ. ດັ່ງນັ້ນສ່ວນຫົວພາຍໃຕ້ເສັ້ນທາງລະບົບເລີ່ມຕົ້ນຕ້ອງຄືກັນໃນທຸກເຊີບເວີ
ແລະລູກຄ້າທັງຫມົດ. ຖ້າການຕິດຕັ້ງ compiler GNU ມາດຕະຖານຖືກນໍາໃຊ້, ຫຼັງຈາກນັ້ນຄວາມຕ້ອງການນີ້
ນຳໃຊ້ກັບທຸກຫ້ອງສະໝຸດທີ່ໄຟລ໌ຫົວຖືກຕິດຕັ້ງພາຍໃຕ້ / usr / ປະກອບມີ or
/usr/local/include/. ໃຫ້ສັງເກດວ່າການຕິດຕັ້ງຊຸດຊອບແວມັກຈະນໍາໄປສູ່ການເພີ່ມເຕີມ
headers ໄຟລ໌ຖືກຈັດໃສ່ໃນ subdirectories ຂອງທັງສອງ.

ຖ້າສົມມຸດຕິຖານນີ້ບໍ່ຖື, ຫຼັງຈາກນັ້ນມັນກໍ່ເປັນໄປໄດ້ທີ່ຈະທໍາລາຍການກໍ່ສ້າງດ້ວຍ distcc-pump
ໂຫມດ, ຫຼືຮ້າຍແຮງກວ່າເກົ່າ, ເພື່ອໃຫ້ໄດ້ຜົນທີ່ບໍ່ຖືກຕ້ອງໂດຍບໍ່ມີການເຕືອນ. ໃນ​ປັດ​ຈຸ​ບັນ​ສະ​ພາບ​ການ​ນີ້​ບໍ່​ແມ່ນ​
ໄດ້ຮັບການຢັ້ງຢືນ, ແລະມັນຢູ່ໃນບັນຊີລາຍຊື່ TODO ຂອງພວກເຮົາເພື່ອແກ້ໄຂບັນຫານີ້.

ວິ​ທີ​ທີ່​ງ່າຍ​ທີ່​ຈະ​ຮັບ​ປະ​ກັນ​ວ່າ​ການ​ປະ​ກອບ​ມີ​ການ​ຕັ້ງ​ຄ່າ​ແມ່ນ​ຄື​ກັນ​ແມ່ນ​ການ​ນໍາ​ໃຊ້​ຂ້າມ​.
compiler ທີ່ກໍານົດເສັ້ນທາງຄົ້ນຫາລະບົບເລີ່ມຕົ້ນທີ່ຈໍາກັດຢູ່ໃນໄດເລກະທໍລີຂອງ
ການຕິດຕັ້ງ compiler.

ເບິ່ງ include_server(1) ຄູ່ມືສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບອາການແລະສາເຫດຂອງການລະເມີດ
ການສົມມຸດຕິຖານຂອງໂຫມດ distcc-pump.

ທາງເລືອກ ບົດສະຫຼຸບ


ຕົວເລືອກສ່ວນໃຫຍ່ທີ່ຜ່ານໄປ distcc ຖືກຕີຄວາມວ່າເປັນທາງເລືອກໃນການລວບລວມ. ທາງເລືອກຕໍ່ໄປນີ້
ແມ່ນເຂົ້າໃຈໂດຍ distcc ຕົວຂອງມັນເອງ. ຖ້າ​ຫາກ​ວ່າ​ທາງ​ເລືອກ​ໃດ​ຫນຶ່ງ​ເຫຼົ່າ​ນີ້​ໄດ້​ຖືກ​ລະ​ບຸ​ໄວ້​, distcc ຈະ​ບໍ່​ໄດ້​
ເອີ້ນ compiler.

- ຊ່ວຍ ສະແດງຄໍາແນະນໍາສະຫຼຸບ.

- ການປ່ຽນແປງ
ສະແດງເວີຊັນລູກຂ່າຍ distcc.

--show-hosts
ສະແດງລາຍຊື່ເຈົ້າພາບທີ່ distcc ຈະໃຊ້. ເບິ່ງພາກສະເພາະຂອງເຈົ້າພາບ.

--scan-ລວມ
ສະແດງລາຍການໄຟລ໌ທີ່ distcc ຈະສົ່ງໄປຫາເຄື່ອງຫ່າງໄກສອກຫຼີກ, ເປັນ
ຄິດໄລ່ໂດຍປະກອບມີເຄື່ອງແມ່ຂ່າຍ. ນີ້​ແມ່ນ​ການ​ຄາດ​ຄະ​ເນ (ເກີນ​ກວ່າ​) ການ​ປະ​ມານ​ຂອງ​
ໄຟລ໌ທີ່ຈະຖືກອ່ານໂດຍ C compiler. ຕົວເລືອກນີ້ໃຊ້ໄດ້ໃນໂໝດປັ໊ມເທົ່ານັ້ນ.
ເບິ່ງພາກສ່ວນ "ວິທີການ Distcc-pump Mode ເຮັດວຽກ" ສໍາລັບລາຍລະອຽດກ່ຽວກັບວິທີການຄິດໄລ່ນີ້.

ບັນຊີລາຍຊື່ຜົນຜະລິດໂດຍ distcc --scan-ລວມ ຈະມີໜຶ່ງລາຍການຕໍ່ແຖວ. ແຕ່ລະ
ແຖວມີໝວດໝູ່ຕາມດ້ວຍເສັ້ນທາງ. ໝວດໝູ່ແມ່ນໜຶ່ງໃນ FILE, SYMLINK,
ໄດເລກະທໍລີ, ຫຼືລະບົບ:

ເອກະສານ ຊີ້ບອກແຫຼ່ງໄຟລ໌ ຫຼືໄຟລ໌ສ່ວນຫົວທີ່ຈະຖືກສົ່ງໄປຫາເຊີບເວີ distcc
ເຈົ້າພາບ.

SYMLINK ຊີ້ໃຫ້ເຫັນເຖິງການເຊື່ອມຕໍ່ສັນຍາລັກທີ່ຈະຖືກສົ່ງໄປຫາ host server distcc.

ທິດທາງ ຊີ້ໃຫ້ເຫັນໄດເລກະທໍລີທີ່ອາດຈະຕ້ອງການເພື່ອລວບລວມແຫຼ່ງ
ໄຟລ໌. ຕົວຢ່າງ, ໄດເລກະທໍລີ "foo" ອາດຈະຕ້ອງການເນື່ອງຈາກການລວມເອົາ
ແບບຟອມ #include "foo/../bar.h". ໄດເລກະທໍລີດັ່ງກ່າວຈະຖືກສ້າງຢູ່ໃນ distcc
ເຊີບເວີໂຮດ.

ລະບົບ ຊີ້ບອກລະບົບປະກອບມີໄດເລກະທໍລີ, ie ໄດເລກະທໍລີທີ່ຢູ່ເທິງ
ຄ່າເລີ່ມຕົ້ນຂອງ compiler ປະກອບມີເສັ້ນທາງເຊັ່ນ "/ usr / ປະກອບມີ"; ໄດເລກະທໍລີດັ່ງກ່າວແມ່ນ
ສົມມຸດວ່າມີຢູ່ໃນ host server distcc, ແລະດັ່ງນັ້ນຈະບໍ່ຖືກສົ່ງໄປຫາ
distcc server host.

-j ສະແດງລະດັບຄວາມສອດຄ່ອງຂອງ distcc, ຕາມການຄິດໄລ່ຈາກລາຍຊື່ເຈົ້າພາບ; ມັນແມ່ນ
ຈໍານວນສູງສຸດຂອງວຽກທີ່ຍັງຄ້າງຄາອອກໃຫ້ໂດຍລູກຄ້ານີ້ໃຫ້ກັບເຄື່ອງແມ່ຂ່າຍທັງຫມົດ. ໂດຍ
ຄ່າເລີ່ມຕົ້ນນີ້ຈະເປັນສີ່ເທົ່າຂອງຈໍານວນເຈົ້າພາບໃນບັນຊີລາຍຊື່ເຈົ້າພາບ, ເວັ້ນເສຍແຕ່ວ່າ
ທາງເລືອກ /LIMIT ຖືກໃຊ້ໃນລາຍຊື່ເຈົ້າພາບ. ເບິ່ງພາກສະເພາະຂອງເຈົ້າພາບ.

ການຕິດຕັ້ງ DISTCC


ມີສາມວິທີທີ່ແຕກຕ່າງກັນທີ່ຈະໂທຫາ distcc, ເພື່ອໃຫ້ເຫມາະສົມກັບສະຖານະການທີ່ແຕກຕ່າງກັນ:

distcc ສາມາດຕິດຕັ້ງພາຍໃຕ້ຊື່ຂອງ compiler ທີ່ແທ້ຈິງ, ເພື່ອສະກັດການໂທ
ມັນແລະດໍາເນີນການໃຫ້ເຂົາເຈົ້າຫ່າງໄກສອກຫຼີກ. ນີ້ "masqueraded" compiler ມີຄວາມເຂົ້າກັນໄດ້ກວ້າງທີ່ສຸດ
ກັບຕົ້ນໄມ້ແຫຼ່ງທີ່ມີຢູ່ແລ້ວ, ແລະສະດວກໃນເວລາທີ່ທ່ານຕ້ອງການໃຊ້ distcc ສໍາລັບທຸກຄົນ
ການລວບລວມ. ຄວາມຈິງທີ່ວ່າ distcc ຖືກນໍາໃຊ້ແມ່ນມີຄວາມໂປ່ງໃສກັບ makefiles.

distcc ສາມາດ prepended ກັບ compiler ຄໍາສັ່ງ, ເຊັ່ນ "distcc cc -c hello.c"
ຫຼື CC="distcc gcc". ນີ້ແມ່ນສະດວກໃນເວລາທີ່ທ່ານຕ້ອງການໃຊ້ distcc ສໍາລັບບາງຄົນເທົ່ານັ້ນ
compilations ຫຼືພະຍາຍາມມັນອອກ, ແຕ່ສາມາດເຮັດໃຫ້ເກີດບັນຫາກັບ makefiles ບາງຫຼື
ເວີຊັນຂອງ libtool ທີ່ສົມມຸດວ່າ $CC ບໍ່ມີພື້ນທີ່ຫວ່າງ.

ສຸດທ້າຍ, distcc ສາມາດຖືກນໍາໃຊ້ໂດຍກົງເປັນ compiler. "cc" ແມ່ນໃຊ້ເປັນເຄື່ອງໝາຍສະເໝີ
ຊື່ຂອງ compiler ທີ່ແທ້ຈິງໃນຮູບແບບ " implicit "ນີ້. ນີ້ສາມາດສະດວກສໍາລັບ
ການນໍາໃຊ້ແບບໂຕ້ຕອບໃນເວລາທີ່ໂຫມດ "explicit" ບໍ່ເຮັດວຽກແຕ່ບໍ່ໄດ້ແນະນໍາແທ້ໆ
ສໍາລັບການນໍາໃຊ້ໃຫມ່.

ຈົ່ງຈື່ໄວ້ວ່າທ່ານບໍ່ຄວນໃຊ້ສອງວິທີສໍາລັບການໂທຫາ distcc ໃນເວລາດຽວກັນ. ຖ້າ​ເຈົ້າ
ກໍາລັງໃຊ້ໄດເລກະທໍລີ masquerade, ຢ່າປ່ຽນ CC ແລະ/ຫຼື CXX, ພຽງແຕ່ໃສ່ໄດເລກະທໍລີກ່ອນ.
ຢູ່ໃນເສັ້ນທາງຂອງເຈົ້າ. ຖ້າທ່ານບໍ່ໄດ້ໃຊ້ລາຍຊື່ masquerade, ທ່ານຈະຕ້ອງປ່ຽນ CC
ແລະ/ຫຼື CXX, ຫຼືດັດແກ້ makefile(s) ເພື່ອໂທຫາ distcc ຢ່າງຈະແຈ້ງ.

ການປິດບັງ


ແນວຄວາມຄິດພື້ນຖານແມ່ນເພື່ອສ້າງ "ໄດເລກະທໍລີ masquerade" ເຊິ່ງປະກອບດ້ວຍການເຊື່ອມຕໍ່ຈາກຊື່ຂອງ
compiler ທີ່ແທ້ຈິງກັບ distcc binary. ໄດເລກະທໍລີນີ້ຖືກໃສ່ໃນຕອນຕົ້ນຂອງເສັ້ນທາງ, ດັ່ງນັ້ນ
ການໂທຫາ compiler ແມ່ນຖືກຂັດຂວາງແລະ distcc ແມ່ນດໍາເນີນການແທນ. distcc ຫຼັງຈາກນັ້ນເອົາອອກ
ຕົວຂອງມັນເອງຈາກ PATH ເພື່ອຊອກຫາ compiler ທີ່ແທ້ຈິງ.

ຍົກ​ຕົວ​ຢ່າງ:

# mkdir /usr/lib/distcc/bin
# cd /usr/lib/distcc/bin
# ln -s ../../../bin/distcc gcc
# ln -s ../../../bin/distcc cc
# ln -s ../../../bin/distcc g++
# ln -s ../../../bin/distcc c++

ຫຼັງຈາກນັ້ນ, ເພື່ອໃຊ້ distcc, ຜູ້ໃຊ້ພຽງແຕ່ຕ້ອງການໃສ່ໄດເລກະທໍລີ / usr/lib/distcc/bin ໃນຕອນຕົ້ນ.
PATH, ແລະໄດ້ຕັ້ງລາຍຊື່ເຈົ້າພາບໃນ DISTCC_HOSTS ຫຼືໄຟລ໌. distcc ຈະຈັດການ
ພັກຜ່ອນ.

ໃຫ້ສັງເກດວ່າໄດເລກະທໍລີ masquerade ນີ້ຕ້ອງເກີດຂຶ້ນໃນ PATH ກ່ອນຫນ້ານັ້ນ
ປະກອບດ້ວຍຕົວສັງລວມຕົວຈິງທີ່ມີຊື່ດຽວກັນ, ແລະບັນດາໂຄງການຊ່ວຍທີ່
compilers ເຫຼົ່ານີ້ໂທຫາ (ເຊັ່ນ: ຫຼື ld) ຍັງຕ້ອງໄດ້ພົບເຫັນຢູ່ໃນ PATH ໃນໄດເລກະທໍລີ
ຫຼັງຈາກໄດເລກະທໍລີ masquerade ນັບຕັ້ງແຕ່ distcc ໂທຫາ compiler ທີ່ແທ້ຈິງດ້ວຍ PATH
ຄ່າທີ່ມີໄດເລກະທໍລີທັງຫມົດເຖິງແລະລວມທັງໄດເລກະທໍລີ masquerade ຖືກຕັດອອກ.

ມັນເປັນໄປໄດ້ທີ່ຈະໄດ້ຮັບ "ຄວາມຜິດພາດ recursion" ໃນຮູບແບບ masquerade, ຊຶ່ງຫມາຍຄວາມວ່າ distcc ແມ່ນ.
somehow ຊອກຫາຕົວມັນເອງອີກເທື່ອຫນຶ່ງ, ບໍ່ແມ່ນ compiler ທີ່ແທ້ຈິງ. ນີ້ສາມາດຊີ້ບອກວ່າທ່ານມີສອງ
masquerade directory ໃນ PATH, ອາດຈະເປັນຍ້ອນມີສອງການຕິດຕັ້ງ distcc ໃນ
ສະ​ຖານ​ທີ່​ທີ່​ແຕກ​ຕ່າງ​ກັນ​. ມັນຍັງສາມາດຊີ້ບອກວ່າທ່ານກໍາລັງພະຍາຍາມປະສົມ "masqueraded" ແລະ
ການດໍາເນີນງານ "ຈະແຈ້ງ".

ຄວາມຜິດພາດ Recursion ສາມາດຫຼີກເວັ້ນໄດ້ໂດຍການໃຊ້ shell scripts ແທນການເຊື່ອມຕໍ່. ຕົວຢ່າງ, ໃນ
/usr/lib/distcc/bin ສ້າງໄຟລ໌ cc ທີ່ມີ:

#!/ ຖັງ / sh
distcc /usr/bin/gcc "$@"

ດ້ວຍວິທີນີ້, ພວກເຮົາບໍ່ໄດ້ຂຶ້ນກັບ distcc ທີ່ຈະຊອກຫາ gcc ທີ່ແທ້ຈິງໂດຍການສືບສວນ
ຕົວແປ PATH. ແທນທີ່ຈະ, ສະຖານທີ່ compiler ແມ່ນສະຫນອງໃຫ້ຢ່າງຊັດເຈນ.

ການ ນຳ ໃຊ້ DISTCC ກັບ CCACHE


ccache ແມ່ນໂຄງການທີ່ເລັ່ງການສ້າງຊອບແວໂດຍການເກັບຂໍ້ມູນຜົນຂອງການລວບລວມຂໍ້ມູນ.
ccache ໂດຍປົກກະຕິແມ່ນເອີ້ນວ່າກ່ອນ distcc, ດັ່ງນັ້ນຜົນໄດ້ຮັບຈະຖືກດຶງມາຈາກປົກກະຕິ
ແຄດ. ບາງການທົດລອງອາດຈະຕ້ອງການສໍາລັບ makefiles idiosyncratic ເພື່ອເຮັດໃຫ້
ທຸກສິ່ງທຸກຢ່າງເຮັດວຽກຮ່ວມກັນ.

ວິທີການທີ່ເຊື່ອຖືໄດ້ຫຼາຍທີ່ສຸດແມ່ນກໍານົດ

CCACHE_PREFIX="distcc"

ນີ້ບອກ ccache ໃຫ້ແລ່ນ distcc ເປັນ wrapper ປະມານ compiler ທີ່ແທ້ຈິງ. cache ຍັງໃຊ້
compiler ທີ່ແທ້ຈິງເພື່ອກວດພົບການຍົກລະດັບ compiler.

ຫຼັງຈາກນັ້ນສາມາດດໍາເນີນການ ccache ໂດຍໃຊ້ໄດເລກະທໍລີ masquerade or ໂດຍ​ການ​ຕັ້ງ​ຄ່າ​

CC="ccache gcc"

ໃນຖານະເປັນສະບັບ 2.2, ccache ບໍ່ໄດ້ລວບລວມ cache ຈາກແຫຼ່ງ preprocessed ແລະດັ່ງນັ້ນຈະ
ບໍ່ເຄີຍໄດ້ຮັບການຕີ cache ຖ້າມັນຖືກແລ່ນຈາກ distccd ຫຼື distcc. ມັນຕ້ອງໄດ້ຮັບການດໍາເນີນການພຽງແຕ່ໃນ
ດ້ານລູກຄ້າແລະກ່ອນ distcc ຈະເປັນການນໍາໃຊ້ໃດໆ.

ໂໝດປ້ຳຂອງ distcc ບໍ່ເຂົ້າກັນໄດ້ກັບ ccache.

ທີ່ສຸດ ນະລັກສະນະ


"ບັນຊີລາຍຊື່ເຈົ້າພາບ" ບອກ distcc ວ່າເຄື່ອງໃດທີ່ຈະໃຊ້ສໍາລັບການລວບລວມ. ໃນຄໍາສັ່ງ, distcc ເບິ່ງ
ໃນ $DISTCC_HOSTS ສະພາບແວດລ້ອມການປ່ຽນແປງ, ຂອງຜູ້ໃຊ້ $DISTCC_DIR/ໂຮສ ໄຟລ໌, ແລະ
ໄຟລ໌ເຈົ້າພາບທົ່ວລະບົບ. ຖ້າບໍ່ພົບລາຍຊື່ເຈົ້າພາບ, distcc ປ່ອຍຄໍາເຕືອນແລະລວບລວມ
ຢູ່ໃນທ້ອງຖິ່ນ.

ລາຍຊື່ເຈົ້າພາບແມ່ນເປັນຊ່ອງຫວ່າງທີ່ແຍກອອກຈາກລາຍຊື່ສະເພາະຂອງເຈົ້າພາບ. ງ່າຍ​ທີ່​ສຸດ​
ແລະຮູບແບບທົ່ວໄປທີ່ສຸດແມ່ນຊື່ເຈົ້າພາບ, ເຊັ່ນ:

localhost ສີແດງ ສີຂຽວ ສີຟ້າ

distcc ມັກເຈົ້າພາບໄປສູ່ການເລີ່ມຕົ້ນຂອງບັນຊີລາຍຊື່, ດັ່ງນັ້ນເຄື່ອງຈັກຄວນຈະຖືກຈັດໃສ່ໃນ
descending ຄໍາສັ່ງຂອງຄວາມໄວ. ໂດຍສະເພາະ, ໃນເວລາທີ່ພຽງແຕ່ການລວບລວມດຽວສາມາດດໍາເນີນການໄດ້ (ເຊັ່ນ
ຈາກສະຄິບ configure), ເຄື່ອງທໍາອິດທີ່ລະບຸໄວ້ແມ່ນຖືກນໍາໃຊ້ (ແຕ່ເບິ່ງ --randomize ດ້ານລຸ່ມ).

ການວາງ localhost ໃນຈຸດທີ່ຖືກຕ້ອງໃນບັນຊີລາຍຊື່ແມ່ນສໍາຄັນທີ່ຈະໄດ້ຮັບການປະຕິບັດທີ່ດີ.
ເນື່ອງຈາກວ່າ overhead ສໍາລັບການເຮັດວຽກໃນທ້ອງຖິ່ນແມ່ນຕໍ່າ, localhost ປົກກະຕິຄວນຈະເປັນຄັ້ງທໍາອິດ.
ຢ່າງໃດກໍ່ຕາມ, ມັນເປັນສິ່ງສໍາຄັນທີ່ລູກຄ້າມີຮອບວຽນພຽງພໍທີ່ຈະດໍາເນີນການເຮັດວຽກໃນທ້ອງຖິ່ນແລະ
ລູກຄ້າ distcc. ຖ້າລູກຄ້າຊ້າກວ່າອາສາສະຫມັກ, ຫຼືຖ້າມີຫຼາຍ
ອາສາສະຫມັກ, ຫຼັງຈາກນັ້ນລູກຄ້າຄວນຈະຖືກໃສ່ໃນບັນຊີລາຍຊື່ຕໍ່ມາຫຼືບໍ່ແມ່ນທັງຫມົດ. ໂດຍທົ່ວໄປ
ກົດລະບຽບ, ຖ້າຄວາມໄວຂອງ CPU ລວມຂອງລູກຄ້າແມ່ນຫນ້ອຍກວ່າຫນຶ່ງສ່ວນຫ້າຂອງຈໍານວນທັງຫມົດ, ຫຼັງຈາກນັ້ນ
ລູກຄ້າຄວນຖືກປະໄວ້ອອກຈາກບັນຊີລາຍຊື່.

ຖ້າທ່ານມີກຸ່ມການກໍ່ສ້າງທີ່ແບ່ງປັນຂະຫນາດໃຫຍ່ແລະໄຟລ໌ໂຮດທີ່ແບ່ງປັນດຽວ, ກົດລະບຽບຂ້າງເທິງ
ຈະເຮັດໃຫ້ເຄື່ອງຈັກຈໍານວນຫນ້ອຍທໍາອິດໃນໄຟລ໌ hosts ໄດ້ຖືກພະຍາຍາມທໍາອິດເຖິງແມ່ນວ່າພວກເຂົາ
ມີແນວໂນ້ມທີ່ຈະມີທຸລະກິດຫຼາຍກວ່າເຄື່ອງຈັກໃນບັນຊີລາຍຊື່ຕໍ່ມາ. ເພື່ອຫຼີກເວັ້ນການນີ້, ວາງຄໍາສໍາຄັນ
--randomize ເຂົ້າໄປໃນບັນຊີລາຍຊື່ເຈົ້າພາບ. ນີ້ຈະເຮັດໃຫ້ລາຍຊື່ເຈົ້າພາບຖືກຈັດເປັນແບບສຸ່ມ, ເຊິ່ງ
ຄວນປັບປຸງການປະຕິບັດເລັກນ້ອຍສໍາລັບກຸ່ມການກໍ່ສ້າງຂະຫນາດໃຫຍ່.

ມີສອງຊື່ເຈົ້າພາບພິເສດ --localslots ແລະ --localslots_cpp ທີ່ເປັນປະໂຫຍດສໍາລັບ
ປັບການໂຫຼດຢູ່ໃນເຄື່ອງທ້ອງຖິ່ນ. ໄດ້ --localslots ເຈົ້າພາບລະບຸວ່າມີວຽກຫຼາຍປານໃດ
ບໍ່ສາມາດດໍາເນີນການຫ່າງໄກສອກຫຼີກທີ່ສາມາດດໍາເນີນການພ້ອມໆກັນຢູ່ໃນເຄື່ອງທ້ອງຖິ່ນ, ໃນຂະນະທີ່
--localslots_cpp ຄວບຄຸມຈຳນວນຕົວປະມວນຜົນກ່ອນຈະແລ່ນຂະໜານກັນຢູ່ໃນທ້ອງຖິ່ນ
ເຄື່ອງ. ການປັບຄ່າເຫຼົ່ານີ້ສາມາດປັບປຸງປະສິດທິພາບ. ການເຊື່ອມໂຍງໃນໂຄງການຂະຫນາດໃຫຍ່ສາມາດໃຊ້ເວລາ
ຈໍານວນຂະຫນາດໃຫຍ່ຂອງຫນ່ວຍຄວາມຈໍາ. ແລ່ນຕົວເຊື່ອມຕໍ່ຂະໜານ, ເຊິ່ງບໍ່ສາມາດປະຕິບັດໄດ້ຈາກໄລຍະໄກ,
ອາດຈະບັງຄັບໃຫ້ເຄື່ອງແລກປ່ຽນ, ເຊິ່ງຫຼຸດລົງປະສິດທິພາບໃນໄລຍະພຽງແຕ່ແລ່ນວຽກໃນ
ລໍາດັບໂດຍບໍ່ມີການແລກປ່ຽນ. ໄດ້ຮັບຈໍານວນຂອງ preprocessors ຂະຫນານທີ່ຖືກຕ້ອງ
ອະນຸຍາດໃຫ້ທ່ານນໍາໃຊ້ປັດໃຈຂະຫນານທີ່ໃຫຍ່ກວ່າກັບ make, ເນື່ອງຈາກວ່າເຄື່ອງຈັກໃນທ້ອງຖິ່ນໃນປັດຈຸບັນມີບາງຢ່າງ
ກົນຈັກສໍາລັບການວັດແທກການນໍາໃຊ້ຊັບພະຍາກອນທ້ອງຖິ່ນ.

ສຸດທ້າຍມີການເຂົ້າເປັນເຈົ້າພາບ

ການປະຕິບັດແມ່ນຂຶ້ນກັບລາຍລະອຽດຂອງແຫຼ່ງແລະ makefiles ທີ່ໃຊ້ສໍາລັບໂຄງການ, ແລະ
ຄວາມໄວຂອງເຄື່ອງຈັກແລະເຄືອຂ່າຍ. ການທົດລອງກັບການຕັ້ງຄ່າທີ່ແຕກຕ່າງກັນສໍາລັບລາຍຊື່ເຈົ້າພາບ
ແລະ -j ປັດໄຈອາດຈະປັບປຸງການປະຕິບັດ.

syntax ແມ່ນ

DISTCC_HOSTS = HOSTSPEC ...
HOSTSPEC = LOCAL_HOST | SSH_HOST | TCP_HOST | OLDSTYLE_TCP_HOST
| GLOBAL_OPTION
| ZEROCONF
LOCAL_HOST = localhost[/LIMIT]
| --localslots=
| --localslots_cpp=
SSH_HOST = [USER]@HOSTID[/LIMIT][:COMMAND][OPTIONS]
TCP_HOST = HOSTID[:PORT][/LIMIT][OPTIONS]
OLDSTYLE_TCP_HOST = HOSTID[/LIMIT][:PORT][OPTIONS]
HOSTID = HOSTNAME | IPV4 | IPV6
OPTIONS = ,OPTIONS[ຕົວເລືອກ]
OPTION = lzo | cpp
GLOBAL_OPTION = --randomize
ZEROCONF = +zeroconf

ນີ້ແມ່ນບາງຕົວຢ່າງສ່ວນບຸກຄົນຂອງ syntax:

localhost
ຄໍາສັບ "localhost" ໄດ້ຖືກຕີຄວາມຫມາຍໂດຍສະເພາະເພື່ອເຮັດໃຫ້ການລວບລວມຂໍ້ມູນ
ປະຕິບັດໂດຍກົງ, ແທນທີ່ຈະສົ່ງກັບ daemon ໃນເຄື່ອງທ້ອງຖິ່ນ. ຖ້າເຈົ້າເຮັດ
ຕ້ອງການເຊື່ອມຕໍ່ກັບ daemon ໃນເຄື່ອງທ້ອງຖິ່ນສໍາລັບການທົດສອບ, ຫຼັງຈາກນັ້ນໃຫ້
ທີ່ຢູ່ IP ຂອງເຄື່ອງ ຫຼືຊື່ເຈົ້າພາບທີ່ແທ້ຈິງ. (ອັນນີ້ຈະຊ້າກວ່າ.)

IPV6 ທີ່ຢູ່ IPv6 ທີ່ເປັນຕົວໜັງສືທີ່ປິດຢູ່ໃນວົງເລັບສີ່ຫຼ່ຽມ, ເຊັ່ນ [::1]

IPV4 ທີ່ຢູ່ IPv4 ທີ່ແທ້ຈິງ, ເຊັ່ນ: 10.0.0.1

ຊື່ເຈົ້າພາບ
ຊື່ເຈົ້າພາບທີ່ຕ້ອງຊອກຫາໂດຍໃຊ້ຕົວແກ້ໄຂ.

:ພອດ ເຊື່ອມຕໍ່ຫາຕົວເລກພອດທົດສະນິຍົມທີ່ລະບຸ, ແທນທີ່ຈະເປັນຄ່າເລີ່ມຕົ້ນຂອງ 3632.

@HOSTID
ເຊື່ອມຕໍ່ກັບໂຮດຜ່ານ SSH, ແທນທີ່ຈະ TCP. ທາງເລືອກສໍາລັບການເຊື່ອມຕໍ່ SSH ສາມາດ
ຖືກຕັ້ງຢູ່ໃນ ~ / .ssh / config

USER@ ເຊື່ອມຕໍ່ຫາແມ່ຂ່າຍຜ່ານ SSH ເປັນຊື່ຜູ້ໃຊ້ທີ່ລະບຸ.

:ຄໍາສັ່ງ
ເຊື່ອມຕໍ່ຜ່ານ SSH, ແລະໃຊ້ເສັ້ນທາງທີ່ລະບຸເພື່ອຊອກຫາເຄື່ອງແມ່ຂ່າຍ distccd. ນີ້​ແມ່ນ
ປົກກະຕິແລ້ວພຽງແຕ່ຕ້ອງການຖ້າຫາກວ່າສໍາລັບບາງເຫດຜົນທ່ານບໍ່ສາມາດຕິດຕັ້ງ distccd ເຂົ້າໄປໃນໄດເລກະທໍລີ
ໃນ PATH ເລີ່ມຕົ້ນສໍາລັບການເຊື່ອມຕໍ່ SSH. ໃຊ້ນີ້ຖ້າທ່ານໄດ້ຮັບຄວາມຜິດພາດເຊັ່ນ "distccd:
ບໍ່ພົບຄຳສັ່ງ" ໃນໂໝດ SSH.

/LIMIT ຂີດຈຳກັດອັດຕານິຍົມສາມາດຖືກເພີ່ມໃສ່ສະເພາະເຈົ້າພາບໃດໜຶ່ງເພື່ອຈຳກັດຈຳນວນຂອງ
ວຽກທີ່ລູກຄ້າຄົນນີ້ຈະສົ່ງໃຫ້ເຄື່ອງ. ຂອບເຂດຈໍາກັດເລີ່ມຕົ້ນເປັນສີ່ຕໍ່
host (ສອງສໍາລັບ localhost), ແຕ່ອາດຈະຖືກຈໍາກັດຕື່ມອີກໂດຍເຄື່ອງແມ່ຂ່າຍ. ເຈົ້າ​ຄວນ
ພຽງແຕ່ຕ້ອງການເພີ່ມທະວີການນີ້ສໍາລັບເຄື່ອງແມ່ຂ່າຍທີ່ມີຫຼາຍກ່ວາສອງໂປເຊດເຊີ.

,lzo ເປີດໃຊ້ການບີບອັດ LZO ສໍາລັບແມ່ຂ່າຍ TCP ຫຼື SSH ນີ້.

,cpp ເປີດໃຊ້ໂໝດ distcc-pump ສໍາລັບແມ່ຂ່າຍນີ້. ໝາຍເຫດ: ຄຳສັ່ງ build ຕ້ອງຖືກຫໍ່ເຂົ້າ
script distcc-pump ເພື່ອເລີ່ມຕົ້ນການລວມເຄື່ອງແມ່ຂ່າຍ.

--randomize
Randomize ຄໍາສັ່ງຂອງບັນຊີລາຍຊື່ເຈົ້າພາບກ່ອນທີ່ຈະປະຕິບັດ.

+ zeroconf
ນີ້ ທາງເລືອກ is ພຽງແຕ່ ມີ if distcc ແມ່ນ ລວບລວມ ກັບ ອາວາ ສະຫນັບສະຫນູນ ເປີດໃຫ້ໃຊ້ງານ at
configure ເວລາ. ເມື່ອລາຍການພິເສດນີ້ມີຢູ່ໃນລາຍຊື່ເຈົ້າພາບ, distcc ຈະ
ໃຊ້ Avahi Zeroconf DNS Service Discovery (DNS-SD) ເພື່ອຊອກຫາ distccd ທີ່ມີຢູ່.
ເຊີບເວີໃນເຄືອຂ່າຍທ້ອງຖິ່ນ. ນີ້ຫຼີກເວັ້ນຄວາມຕ້ອງການທີ່ຈະລາຍຊື່ເຈົ້າພາບຢ່າງຊັດເຈນ
ຊື່ ຫຼືທີ່ຢູ່ IP ຂອງເຄື່ອງເຊີບເວີ distcc. ເຊີບເວີ distccd ຕ້ອງມີ
ໄດ້ເລີ່ມຕົ້ນດ້ວຍຕົວເລືອກ "--zeroconf" ເພື່ອ distccd. ເປັນ caveat ທີ່ສໍາຄັນແມ່ນວ່າ
ໃນ​ການ​ປະ​ຕິ​ບັດ​ໃນ​ປະ​ຈຸ​ບັນ​, ຮູບ​ແບບ pump ("cpp​"​) ແລະ compression (",lzo​"​) ຈະ​
ບໍ່ເຄີຍຖືກໃຊ້ກັບໂຮສທີ່ຢູ່ຜ່ານ zeroconf.

ນີ້ແມ່ນຕົວຢ່າງທີ່ສະແດງໃຫ້ເຫັນເຖິງຄວາມເປັນໄປໄດ້ບາງຢ່າງ:

localhost/2 @bigman/16:/opt/bin/distccd ເຄື່ອງເກົ່າ: 4200/1
# ຄົນຂັບລົດ is ລົງ
ຫ່າງໄກ / 3, lzo

ຄໍາຄິດເຫັນແມ່ນອະນຸຍາດໃຫ້ຢູ່ໃນສະເພາະຂອງເຈົ້າພາບ. ຄຳເຫັນເລີ່ມຕົ້ນດ້ວຍເຄື່ອງໝາຍ hash/pound (#)
ແລະແລ່ນໄປໃນຕອນທ້າຍຂອງເສັ້ນ.

ຖ້າໂຮສຢູ່ໃນລາຍຊື່ບໍ່ສາມາດເຂົ້າເຖິງໄດ້ distcc ຈະສົ່ງຄໍາເຕືອນແລະບໍ່ສົນໃຈເຈົ້າພາບນັ້ນ
ປະມານຫນຶ່ງນາທີ.

ບີບອັດ


ໄດ້ ໂລໂຊ ທາງເລືອກເຈົ້າພາບກໍານົດວ່າການບີບອັດ LZO ຄວນຖືກນໍາໃຊ້ເພື່ອການໂອນຂໍ້ມູນ,
ລວມທັງແຫຼ່ງທີ່ປຸງແຕ່ງກ່ອນ, ລະຫັດວັດຖຸ ແລະຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດ. ການບີບອັດແມ່ນປົກກະຕິແລ້ວ
ປະຫຍັດໃນເຄືອຂ່າຍຊ້າກວ່າ 100Mbps, ແຕ່ຜົນໄດ້ຮັບອາດຈະແຕກຕ່າງກັນໄປຕາມເຄືອຂ່າຍ,
ໂຮງງານຜະລິດແລະຕົ້ນໄມ້ແຫຼ່ງ.

ການເປີດໃຊ້ການບີບອັດເຮັດໃຫ້ລູກຂ່າຍ distcc ແລະເຊີບເວີໃຊ້ເວລາ CPU ຫຼາຍຂຶ້ນ, ແຕ່ໜ້ອຍລົງ
ການຈະລາຈອນເຄືອຂ່າຍ. ເວລາ CPU ທີ່ເພີ່ມແມ່ນບໍ່ສໍາຄັນສໍາລັບຮູບແບບປັ໊ມ. ການບີບອັດ
ອັດຕາສ່ວນປົກກະຕິແມ່ນ 4:1 ສໍາລັບແຫຼ່ງທີ່ມາ ແລະ 2:1 ສໍາລັບລະຫັດວັດຖຸ.

ການນໍາໃຊ້ການບີບອັດຮຽກຮ້ອງໃຫ້ທັງລູກຄ້າແລະເຄື່ອງແມ່ຂ່າຍໃຊ້ຢ່າງຫນ້ອຍການປ່ອຍ 2.9 ຂອງ distcc.
ບໍ່ມີການກຳນົດຄ່າເຊີບເວີແມ່ນຕ້ອງການ: ເຊີບເວີຕອບສະໜອງດ້ວຍການຕອບກັບທີ່ບີບອັດສະເໝີ
ການຮ້ອງຂໍທີ່ຖືກບີບອັດ.

ໂໝດປັ໊ມຕ້ອງການໃຫ້ເຊີບເວີມີທາງເລືອກໃນການເປັນເຈົ້າພາບຂອງ lzo.

ຄົ້ນຫາ ເສັ້ນທາງ


ຖ້າຊື່ compiler ເປັນເສັ້ນທາງຢ່າງແທ້ຈິງ, ມັນຖືກສົ່ງຜ່ານ verbatim ກັບເຄື່ອງແມ່ຂ່າຍແລະ
compiler ແມ່ນດໍາເນີນການຈາກໄດເລກະທໍລີນັ້ນ. ຍົກ​ຕົວ​ຢ່າງ:

distcc /usr/local/bin/gcc-3.1415 -c ສະບາຍດີ.c

ຖ້າຊື່ compiler ບໍ່ແມ່ນຢ່າງແທ້ຈິງ, ຫຼືບໍ່ມີຄຸນສົມບັດຄົບຖ້ວນ, ເສັ້ນທາງຂອງ distccd ຈະຖືກຄົ້ນຫາ.
ເມື່ອ distcc ຖືກແລ່ນຈາກໄດເລກະທໍລີ masquerade, ພຽງແຕ່ຊື່ພື້ນຖານຂອງ compiler ແມ່ນ
ໃຊ້. ເສັ້ນທາງຂອງລູກຄ້າໄດ້ຖືກນໍາໃຊ້ພຽງແຕ່ເພື່ອດໍາເນີນການ preprocessor ແລະບໍ່ມີຜົນກະທົບກ່ຽວກັບ
ເສັ້ນທາງຂອງເຄື່ອງແມ່ຂ່າຍ.

ໝົດເວລາ


ທັງລູກຄ້າ distcc ແລະເຊີບເວີກໍານົດເວລາຫມົດເວລາໃນການໂອນຂໍ້ມູນໃນທົ່ວເຄືອຂ່າຍ.
ນີ້ມີຈຸດປະສົງເພື່ອກວດຫາແມ່ຂ່າຍທີ່ຫຼຸດລົງ ຫຼືບໍ່ສາມາດຕິດຕໍ່ໄດ້, ແລະເພື່ອປ້ອງກັນການລວບລວມຂໍ້ມູນ
ຫ້ອຍຢ່າງບໍ່ມີກຳນົດຖ້າເຊີບເວີຖືກຕັດການເຊື່ອມຕໍ່ໃນຂະນະທີ່ໃຊ້ຢູ່. ຖ້າລູກຄ້າຂ້າງຄຽງໝົດເວລາ
ໝົດອາຍຸ, ວຽກງານຈະຖືກດໍາເນີນການຢູ່ໃນທ້ອງຖິ່ນ.

ເວລາໝົດເວລາແມ່ນບໍ່ສາມາດກຳນົດຄ່າໄດ້ໃນປັດຈຸບັນ.

ທິດສະດີວິທະຍາ


ຂໍ້ຄວາມຄວາມຜິດພາດ ຫຼືຄໍາເຕືອນຈາກຜູ້ລວບລວມຂໍ້ມູນໃນທ້ອງຖິ່ນ ຫຼືທາງໄກແມ່ນຖືກສົ່ງໄປຫາການວິນິໄສ
ຜົນຜະລິດໃນລູກຄ້າ.

distcc ສາມາດສະໜອງຂໍ້ມູນການດີບັ໊ກຢ່າງກວ້າງຂວາງເມື່ອຕົວເລືອກ verbose ຖືກໃຊ້. ນີ້
ແມ່ນຄວບຄຸມໂດຍ DISTCC_VERBOSE ສະພາບແວດລ້ອມຕົວແປກ່ຽວກັບລູກຄ້າ, ແລະ -- verbose
ທາງເລືອກໃນເຄື່ອງແມ່ຂ່າຍ. ສໍາລັບການແກ້ໄຂບັນຫາ, ກວດເບິ່ງຂໍ້ຜິດພາດທັງລູກຄ້າແລະເຄື່ອງແມ່ຂ່າຍ
ຂໍ້ຄວາມ.

ອອກ ລະຫັດ


ລະຫັດອອກຂອງ distcc ປົກກະຕິແລ້ວແມ່ນຂອງ compiler: ສູນສໍາລັບການລວບລວມສົບຜົນສໍາເລັດ
ແລະບໍ່ແມ່ນສູນ.

distcc ແຍກຄວາມແຕກຕ່າງລະຫວ່າງຄວາມຜິດພາດ "ແທ້ຈິງ" ເຊັ່ນຄວາມຜິດພາດ syntax ໃນແຫຼ່ງ, ແລະ
ຄວາມຜິດພາດ "ອຸບັດຕິເຫດ" ເຊັ່ນ: ບັນຫາເຄືອຂ່າຍການເຊື່ອມຕໍ່ກັບອາສາສະຫມັກ. ໃນກໍລະນີ
ຄວາມຜິດພາດໂດຍບັງເອີນ, distcc ຈະພະຍາຍາມລວບລວມຂໍ້ມູນຄືນໃໝ່ຢູ່ໃນເຄື່ອງ ເວັ້ນເສຍແຕ່ວ່າ DISTCC_FALLBACK
ທາງເລືອກຖືກປິດໃຊ້ງານ.

ຖ້າ compiler ອອກດ້ວຍສັນຍານ, distcc ສົ່ງຄືນລະຫັດອອກຂອງ 128 ບວກກັບສັນຍານ.
ຈໍານວນ

distcc ຄວາມຜິດພາດພາຍໃນເຮັດໃຫ້ລະຫັດອອກລະຫວ່າງ 100 ແລະ 127. ໂດຍສະເພາະ

100 ຄວາມລົ້ມເຫຼວຂອງ distcc ທົ່ວໄປ.

101 ການໂຕ້ຖຽງທີ່ບໍ່ດີ.

102 Bind ລົ້ມເຫລວ.

103 ການເຊື່ອມຕໍ່ລົ້ມເຫລວ.

104 Compiler crashed.

105 ອອກຈາກຄວາມຊົງຈໍາ.

106 Bad Host SPEC

107 ຄວາມຜິດພາດ I/O

108 ຕັດອອກ.

109 ໂປຣໂຕຄໍຜິດພາດ.

110 ບໍ່ພົບ compiler ທີ່ໃຫ້ຢູ່ໃນ host ທາງໄກ. ກວດເບິ່ງວ່າ $CC ຖືກຕັ້ງ
ເຫມາະສົມແລະວ່າມັນໄດ້ຖືກຕິດຕັ້ງຢູ່ໃນໄດເລກະທໍລີໃນເສັ້ນທາງຄົ້ນຫາສໍາລັບ
distccd.

111 Recursive call to distcc.

112 ລົ້ມເຫລວໃນການຍົກເລີກສິດທິພິເສດ.

113 ການເຂົ້າເຖິງເຄືອຂ່າຍຖືກປະຕິເສດ.

114 ໃຊ້ໂດຍຂະບວນການອື່ນ.

115 ບໍ່ມີໄຟລ໌ດັ່ງກ່າວ.

116 ບໍ່ມີໂຮສທີ່ກຳນົດໄວ້ ແລະ ທາງເລືອກທີ່ປິດໃຊ້ງານ.

118 ໝົດເວລາ.

ໃຊ້ distcc ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net


ເຊີບເວີ ແລະສະຖານີເຮັດວຽກຟຣີ

ດາວໂຫຼດແອັບ Windows ແລະ Linux

  • 1
    Firebird
    Firebird
    Firebird RDBMS ສະຫນອງຄຸນສົມບັດ ANSI SQL
    & ແລ່ນໃນ Linux, Windows &
    ເວທີ Unix ຫຼາຍ. ຄຸນ​ລັກ​ສະ​ນະ
    ຄວາມສອດຄ່ອງ ແລະປະສິດທິພາບທີ່ດີເລີດ
    ແລະພະລັງງານ...
    ດາວໂຫລດ Firebird
  • 2
    KompoZer
    KompoZer
    KompoZer ເປັນບັນນາທິການ HTML ທີ່ໃຊ້ wysiwyg
    ຖານຂໍ້ມູນ Mozilla Composer. ເປັນ
    ການພັດທະນາຂອງ Nvu ໄດ້ຖືກຢຸດເຊົາ
    ໃນປີ 2005, KompoZer ແກ້ໄຂຂໍ້ບົກພ່ອງຫຼາຍຢ່າງແລະ
    ເພີ່ມ f...
    ດາວໂຫລດ KompoZer
  • 3
    ດາວໂຫຼດ Manga ຟຣີ
    ດາວໂຫຼດ Manga ຟຣີ
    The Free Manga Downloader (FMD) ເປັນ
    ຄໍາຮ້ອງສະຫມັກແຫຼ່ງເປີດທີ່ຂຽນໃນ
    Object-Pascal ສໍາລັບການຄຸ້ມຄອງແລະ
    ການດາວໂຫຼດ manga ຈາກເວັບໄຊທ໌ຕ່າງໆ.
    ນີ້ແມ່ນແວ່ນ...
    ດາວໂຫຼດ Manga ດາວໂຫຼດຟຣີ
  • 4
    Aetbootin
    Aetbootin
    UNetbootin ອະນຸຍາດໃຫ້ທ່ານສ້າງ bootable
    Live USB drives ສໍາລັບ Ubuntu, Fedora, ແລະ
    ການແຈກຢາຍ Linux ອື່ນໆໂດຍບໍ່ມີ
    ການເຜົາໄຫມ້ CD. ມັນເຮັດວຽກຢູ່ໃນ Windows, Linux,
    ແລະ ...
    ດາວໂຫລດ UNetbootin
  • 5
    Dolibarr ERP - CRM
    Dolibarr ERP - CRM
    Dolibarr ERP - CRM ແມ່ນໃຊ້ງ່າຍ
    ຊຸດຊອບແວແຫຼ່ງເປີດ ERP ແລະ CRM
    (ດໍາເນີນການກັບເຄື່ອງແມ່ຂ່າຍເວັບ php ຫຼືເປັນ
    ຊອບ​ແວ standalone​) ສໍາ​ລັບ​ທຸ​ລະ​ກິດ​,
    ພື້ນຖານ...
    ດາວໂຫລດ Dolibarr ERP - CRM
  • 6
    SQuirreL SQL Client
    SQuirreL SQL Client
    SQuirreL SQL Client ເປັນ SQL ແບບກຣາຟິກ
    ລູກຄ້າຂຽນໃນ Java ທີ່ຈະອະນຸຍາດໃຫ້
    ທ່ານສາມາດເບິ່ງໂຄງສ້າງຂອງ JDBC ໄດ້
    ຖານ​ຂໍ້​ມູນ​ທີ່​ສອດ​ຄ້ອງ​ກັນ​, ທ່ອງ​ຂໍ້​ມູນ​ໃນ​
    ໂຕະ...
    ດາວໂຫລດ SQuirreL SQL Client
  • ເພີ່ມເຕີມ »

Linux ຄຳ ສັ່ງ

Ad