ນີ້ແມ່ນຄໍາສັ່ງ include_server ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
include_server.py - ການຄາດຄະເນແບບອະນຸລັກຂອງການລວມເອົາການເພິ່ງພາອາໄສຂອງ C/C++
ສະຫຼຸບສັງລວມ
include_server --ພອດ INCLUDE_SERVER_PORT [ຕົວເລືອກ]
ລາຍລະອຽດ
include_server.py ເລີ່ມຕົ້ນຂະບວນການລວມເຄື່ອງແມ່ຂ່າຍ. ຂະບວນການນີ້ຕອບຄໍາຖາມຈາກ
distcc(1) ລູກຄ້າກ່ຽວກັບໄຟລ໌ໃດທີ່ຈະລວມເຂົ້າໃນການລວບລວມ C/C++. include_server.py
ຄໍາສັ່ງຂອງຕົວມັນເອງຢຸດເຊົາທັນທີທີ່ປະກອບມີເຄື່ອງແມ່ຂ່າຍໄດ້ຖືກ spawned.
ອາກິວເມັນ INCLUDE_SERVER_PORT ແມ່ນຊື່ຂອງຊັອກເກັດທີ່ໃຊ້ສຳລັບການສື່ສານທັງໝົດ
ລະຫວ່າງລູກຄ້າ distcc ແລະປະກອບມີເຄື່ອງແມ່ຂ່າຍ. ໄດ້ distcc-pump(1) ຄໍາສັ່ງຮັບຜິດຊອບ
ສໍາລັບການສ້າງສະຖານທີ່ເຕົ້າຮັບ, ສໍາລັບການຖ່າຍທອດມັນກັບສະຄິບນີ້, ແລະສໍາລັບການຖ່າຍທອດມັນໃຫ້ທຸກຄົນ
ລູກຄ້າ distcc ຜ່ານຕົວແປສະພາບແວດລ້ອມທີ່ມີຊື່ INCLUDE_SERVER_PORT.
ໂປຣໂຕຄໍທີ່ໃຊ້ໂດຍເຊີບເວີລວມໃຊ້ການຈັດຕັ້ງປະຕິບັດ RPC ຂອງ distcc. ແຕ່ລະ distcc
ຄໍາຮ້ອງສະຫມັກປະກອບດ້ວຍ (1) ລະບົບປະຈຸບັນແລະ (2) ບັນຊີລາຍການຂອງການໂຕ້ຖຽງຂອງ
ຄໍາສັ່ງລວບລວມ.
ຖ້າລວມເອົາເຄື່ອງແມ່ຂ່າຍສາມາດດໍາເນີນການຮ້ອງຂໍ, ຫຼັງຈາກນັ້ນມັນຕອບລູກຄ້າ distcc ໂດຍ
ສົ່ງບັນຊີລາຍຊື່ຂອງ filepaths. filepaths ແມ່ນແຫຼ່ງທີ່ມາ ແລະສ່ວນຫົວທີ່ຖືກບີບອັດ
ໄຟລ໌ທີ່ພົບວ່າມີຄວາມຈໍາເປັນສໍາລັບການລວບລວມໂດຍຜ່ານການວິເຄາະລວມ. ບັນຊີລາຍຊື່ດັ່ງກ່າວ
ປະກອບມີການເຊື່ອມຕໍ່ສັນຍາລັກແລະແມ້ກະທັ້ງໄຟລ໌ dummy ທີ່ຈໍາເປັນສໍາລັບເຄື່ອງແມ່ຂ່າຍການລວບລວມ
ກໍ່ສ້າງແບບຈໍາລອງທີ່ຖືກຕ້ອງຂອງພາກສ່ວນຂອງລະບົບໄຟລ໌ທີ່ຈໍາເປັນສໍາລັບການລວບລວມ. ໃນ
ດ້ວຍວິທີນີ້, ໄຟລ໌ header ທີ່ຕ້ອງການເຊັ່ນ /path/foo.h ຖືກບີບອັດ, ປ່ຽນຊື່, ແລະເກັບໄວ້ໃນ
ສະຖານທີ່ຊົ່ວຄາວ, ເຊັ່ນ /dev/shm/tmpiAvfGv.include_server-9368-1/path/foo.h.lzo. ໄດ້
distcc client ຈະສົ່ງໄຟລ໌ເຫຼົ່ານີ້ໄປຫາເຄື່ອງແມ່ຂ່າຍການລວບລວມ, ບ່ອນທີ່ພວກມັນຈະຢູ່
uncompressed ແລະ mounted ຊົ່ວຄາວ.
ຖ້າເຄື່ອງແມ່ຂ່າຍລວມບໍ່ສາມາດດໍາເນີນການຮ້ອງຂໍໄດ້, ຫຼັງຈາກນັ້ນມັນຈະສົ່ງຄືນບັນຊີລາຍຊື່ເປົ່າ
ກັບລູກຄ້າ distcc.
ມີສອງປະເພດຂອງຄວາມລົ້ມເຫຼວທີ່ກ່ຽວຂ້ອງກັບເຄື່ອງແມ່ຂ່າຍລວມ. ລວມມີເຄື່ອງແມ່ຂ່າຍອາດຈະ
ລົ້ມເຫລວໃນການຄິດໄລ່ລວມຫຼືລົ້ມເຫລວໃນວິທີອື່ນ, ເບິ່ງພາກ INCLUDE ຜູ້ໃຫ້ບໍລິການ ອາການ.
ນອກຈາກນີ້, ການລວບລວມຂໍ້ມູນໃນເຊີບເວີລົບອາດຈະລົ້ມເຫລວເນື່ອງຈາກການຄິດໄລ່ບໍ່ພຽງພໍ
ປະກອບມີການປິດ, ແຕ່ຫຼັງຈາກນັ້ນສໍາເລັດເມື່ອ retried ໃນທ້ອງຖິ່ນ, ເບິ່ງພາກ DISTCC ຄວາມແຕກຕ່າງ
ອາການ.
ທາງເລືອກ ບົດສະຫຼຸບ
ຕົວເລືອກຕໍ່ໄປນີ້ຖືກເຂົ້າໃຈໂດຍ include_server.py.
-dPAT, --debug_pattern=PAT
ບິດ vector ສໍາລັບການເປີດການເຕືອນໄພແລະ debugging
1 = ຄໍາເຕືອນ
2 = ຕິດຕາມບາງຫນ້າທີ່
ອຳນາດອື່ນໆຂອງສອງ: ເບິ່ງ include_server/basics.py.
-e, --ອີເມລ
ສົ່ງອີເມວໄປຫາ 'distcc-pump-errors' ຫຼືຖ້າຖືກກໍານົດ, ມູນຄ່າຂອງຕົວແປສະພາບແວດລ້ອມ
DISTCC_EMAILLOG_WHOM_TO_BLAME, ເມື່ອລວມເອົາເຊີບເວີມີບັນຫາ. ຄ່າເລີ່ມຕົ້ນແມ່ນ
ເພື່ອບໍ່ສົ່ງອີເມວ.
--email_bound NUMBER
ຈໍານວນອີເມວສູງສຸດທີ່ຈະສົ່ງ (ນອກເໜືອໄປຈາກອີເມວສຸດທ້າຍ). ຄ່າເລີ່ມຕົ້ນ: 3.
-- ບໍ່ມີອີເມວ
ຢ່າສົ່ງອີເມວ. ນີ້ແມ່ນຄ່າເລີ່ມຕົ້ນ.
--path_observation_re=RE
ອອກຂໍ້ຄວາມເຕືອນທຸກຄັ້ງທີ່ຊື່ໄຟລ໌ຖືກແກ້ໄຂເປັນ realpath ທີ່ກົງກັນ
ໂດຍ RE, ເຊິ່ງເປັນການສະແດງອອກປົກກະຕິໃນ syntax Python. ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການຊອກຫາ
ອອກບ່ອນທີ່ໄຟລ໌ລວມມາຈາກຕົວຈິງ. ໃຊ້ RE="" ເພື່ອຊອກຫາພວກມັນທັງໝົດ. ຫມາຍເຫດ:
ຄຳເຕືອນຕ້ອງຖືກເປີດໃຊ້ດ້ວຍຢ່າງໜ້ອຍ -d1.
--pid_file ເສັ້ນທາງໄຟລ໌
pid ຂອງ include server ແມ່ນຂຽນເພື່ອຍື່ນ FILEPATH. ນີ້ອະນຸຍາດໃຫ້ສະຄິບ
ດັ່ງກ່າວ distcc-pump ເພື່ອທໍາລາຍລວມເອົາເຄື່ອງແມ່ຂ່າຍ.
- ແມ່ນແລ້ວ, --ສະຖິຕິ
ພິມຂໍ້ມູນເພື່ອ stdout ກ່ຽວກັບການລວມເອົາການວິເຄາະ.
--stat_reset_triggers=LIST
Flush stat caches ເມື່ອເວລາຂອງ filepath ໃດໆໃນ LIST ປ່ຽນແປງຫຼື
filepath ເຂົ້າມາຫຼືອອກຈາກທີ່ມີຢູ່ແລ້ວ. LIST ແມ່ນສະຕຣິງທີ່ແຍກດ້ວຍຈໍ້າສອງເມັດຂອງ
filepaths, ອາດຈະປະກອບດ້ວຍ globs ງ່າຍດາຍ (ຕາມອະນຸຍາດໂດຍໂມດູນ glob ຂອງ Python).
ພິມຄຳເຕືອນທຸກຄັ້ງທີ່ມີການປ່ຽນແປງດັ່ງກ່າວເກີດຂຶ້ນ (ຖ້າການເຕືອນຖືກເປີດໃຊ້ງານ). ນີ້
ທາງເລືອກອະນຸຍາດໃຫ້ມີຂໍ້ຍົກເວັ້ນຈໍາກັດເພື່ອສົມມຸດຕິຖານປົກກະຕິ distcc-pump ຂອງແຫຼ່ງທີ່
ໄຟລ໌ບໍ່ໄດ້ຖືກດັດແກ້ໃນລະຫວ່າງການສ້າງ.
-t, --ເວລາ
ພິມຜ່ານໄປ, ຜູ້ໃຊ້, ແລະລະບົບເວລາທີ່ຈະ stderr.
--unsafe_absolute_includes
ດໍາເນີນການ preprocessing ໃນເຄື່ອງແມ່ຂ່າຍການລວບລວມເຖິງແມ່ນວ່າຈະປະກອບມີ filepaths ຢ່າງແທ້ຈິງ
ແມ່ນພົບ. ໂດຍປົກກະຕິ, ເຊີບເວີປະກອບມີຈະກັບຄືນມາຢູ່ໃນການປະມວນຜົນກ່ອນທ້ອງຖິ່ນ
ຖ້າມັນກວດພົບຢ່າງແທ້ຈິງປະກອບມີ. ດັ່ງນັ້ນ, ທຸງນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການປ້ອງກັນດັ່ງກ່າວ
ການຫຼຸດລົງໃນເວລາທີ່ມີຢ່າງແທ້ຈິງແມ່ນເປັນສັນຍານເຕືອນທີ່ບໍ່ຖືກຕ້ອງ, ບໍ່ວ່າຈະເປັນຢ່າງແທ້ຈິງ
ປະກອບມີຖືກຍົກເລີກໃນລະຫວ່າງການ preprocessing ຫຼືເນື່ອງຈາກວ່າໄຟລ໌ລວມຢ່າງແທ້ຈິງ
ມີຢູ່ໃນເຄື່ອງແມ່ຂ່າຍການລວບລວມ.
ຊັດເຈນກວ່ານັ້ນ, ກັບ --unsafe_absolute_includes absolute include ແມ່ນຖືກລະເລີຍສໍາລັບ
ຈຸດປະສົງຂອງການເກັບກໍາປະກອບມີການປິດ. ການນໍາໃຊ້ທາງເລືອກນີ້ອາດຈະນໍາໄປສູ່ການ
ຜົນໄດ້ຮັບທີ່ບໍ່ຖືກຕ້ອງເນື່ອງຈາກວ່າ (1) header ຕົວຈິງແລ້ວອາດຈະຖືກລວມຢູ່ໃນ
compilation server ແລະມັນອາດຈະບໍ່ຄືກັນກັບລູກຄ້າ, (2) ປະກອບມີ
ທິດທາງຂອງຫົວຂໍ້ບໍ່ໄດ້ຖືກວິເຄາະຕື່ມອີກ.
ທາງເລືອກແມ່ນເປັນປະໂຫຍດສໍາລັບການລວບລວມລະຫັດທີ່ມີ hardcoded ດັ່ງກ່າວສະຖານທີ່ຢ່າງແທ້ຈິງ
ຂອງໄຟລ໌ header ພາຍໃນຄໍາສັ່ງທີ່ມີເງື່ອນໄຂ (ເຊັ່ນ "#ifdef") ທີ່ສະແດງ
ລວມເຖິງບໍ່ກ່ຽວຂ້ອງ. ຫຼາຍທີ່ຊັດເຈນ, ເຫຼົ່ານີ້ລວມມີຕ້ອງໄດ້ຮັບການກໍາຈັດໃນລະຫວ່າງ
preprocessing ສໍາລັບການຕັ້ງຄ່າຕົວຈິງ. ຫຼັງຈາກນັ້ນ, ຄໍາຖາມຂອງການມີຢູ່ຂອງ
ໄຟລ໌ header ແມ່ນ moot ແລະການລວບລວມຫ່າງໄກສອກຫຼີກແມ່ນສຽງ. ນີ້ມັກຈະເປັນກໍລະນີຖ້າຫາກວ່າ
ດັ່ງກ່າວປະກອບມີແມ່ນຫມາຍຄວາມວ່າສໍາລັບການຕັ້ງຄ່າທີ່ຜິດປົກກະຕິທີ່ແຕກຕ່າງຈາກຕົວຈິງ
ການຕັ້ງຄ່າ
- ໃນ, --ກວດສອບ
ກວດສອບວ່າໄຟລ໌ໃນການປິດ CPP ແມ່ນມີຢູ່ໃນການປິດທີ່ຄິດໄລ່ໂດຍການປະກອບ
ໂປເຊດເຊີ.
-w, --write_include_close
ຂຽນໄຟລ໌ .d_approx ເຊິ່ງລາຍຊື່ໄຟລ໌ລວມທັງໝົດທີ່ຄິດໄລ່ໂດຍການລວມເອົາ
ເຊີບເວີ; ດ້ວຍ -x, ນອກຈາກນັ້ນ, ຂຽນໄຟລ໌ລວມທີ່ຄິດໄລ່ໂດຍ CPP ເປັນ a
ໄຟລ໌ .d_exact.
-x, --exact_analysis
ໃຊ້ CPP ແທນ, ຢ່າປ່ອຍໄຟລ໌ສ່ວນຫົວຂອງລະບົບ.
INCLUDE ຜູ້ໃຫ້ບໍລິການ ອາການ ແລະ ບັນຫາ
ຂໍ້ຄວາມ ແລະຄຳເຕືອນທີ່ເປັນໄປໄດ້ທີ່ສຸດທີ່ຈະມາຈາກໂປເຊດເຊີລວມມີຢູ່ຂ້າງລຸ່ມນີ້.
ການຜະລິດກ່ອນ ຢູ່ໃນທ້ອງຖິ່ນ. ລວມ ເຄື່ອງແມ່ຂ່າຍ ບໍ່ ກວມເອົາ: ບໍ່ສາມາດ ກໍານົດ Default ລະບົບ
ປະກອບດ້ວຍ ໄດເລກະທໍລີ
ເພື່ອກໍານົດໄດເລກະທໍລີສ່ວນຫົວຂອງລະບົບໃນຕອນຕົ້ນ, ເຊີບເວີປະກອບມີ
compiler ຫນຶ່ງຄັ້ງສໍາລັບແຕ່ລະພາສາທີ່ຈໍາເປັນໃນລະຫວ່າງກອງປະຊຸມຂອງຕົນ. ຂໍ້ຄວາມນີ້ຊີ້ໃຫ້ເຫັນ
ວ່າ compiler ທີ່ລະບຸໄວ້ໃນ distcc ບໍ່ມີຢູ່ໃນລູກຄ້າ.
ການຜະລິດກ່ອນ ຢູ່ໃນທ້ອງຖິ່ນ. ລວມ ເຄື່ອງແມ່ຂ່າຍ ບໍ່ ກວມເອົາ: ປະກັນຕົວ ອອກ ເນື່ອງຈາກວ່າ ປະກອບດ້ວຍ ເຄື່ອງແມ່ຂ່າຍ
ໃຊ້ຈ່າຍ ເພີ່ມເຕີມ ກ່ວາ ...ສ ຜູ້ໃຊ້ ທີ່ໃຊ້ເວລາ ການຈັດການ ຮ້ອງຂໍ
ໃນສະຖານະການທີ່ບໍ່ທໍາມະດາ, ລວມທັງເຄື່ອງແມ່ຂ່າຍບໍ່ສາມາດວິເຄາະມະຫາພາກທີ່ສັບສົນຫຼາຍ
ການສະແດງອອກ. ລູກຄ້າ distcc ຈະໃຊ້ໂໝດ distcc ທຳມະດາ.
ຄໍາເຕືອນ: Filepath ຕ້ອງ be ພີ່ນ້ອງ ແຕ່ ບໍ່ແມ່ນ
ເຊີບເວີລວມບໍ່ຍອມຮັບ filepaths ຢ່າງແທ້ຈິງ, ເຊັ່ນ:
/usr/include/stdio.h, ໃນລວມເອົາຄໍາສັ່ງ, ເນື່ອງຈາກວ່າບໍ່ມີການຮັບປະກັນວ່າ
ຫົວນີ້ຢູ່ໃນເຄື່ອງເຊີບເວີການລວບລວມຈະຄືກັນກັບທີ່ຢູ່ເທິງ
ລູກຄ້າ. ລວມເອົາເຊີບເວີໃຫ້ເຖິງການວິເຄາະລວມເຖິງການປິດ. distcc
ລູກຄ້າບໍ່ສາມາດໃຊ້ໂໝດປັ໊ມໄດ້.
ເພື່ອເອົາຊະນະບັນຫານີ້ໃນທາງທີ່ບໍ່ຫນ້າເຊື່ອຖື, ກໍານົດຕົວແປສະພາບແວດລ້ອມ
INCLUDE_SERVER_ARGS='--unsafe_absolute_includes' ເມື່ອເອີ້ນເຄື່ອງ distcc-pump
ສະຄຣິບເພື່ອຜ່ານທາງເລືອກ --unsafe_absolute_includes ໃຫ້ກັບເຄື່ອງແມ່ຂ່າຍລວມ.
ຄໍາເຕືອນ: ຢ່າງແທ້ຈິງ ເສັ້ນທາງໄຟລ໌ ... ແມ່ນ ບໍ່ສົນໃຈ
--unsafe_absolute_includes ຖືກໃຊ້ຢູ່. ສະຖານະການນີ້ເກີດຂຶ້ນພາຍໃຕ້ການດຽວກັນ
ສະຖານະການຄືກັບເວລາທີ່ "Filepath ຕ້ອງເປັນພີ່ນ້ອງແຕ່ບໍ່ແມ່ນ" ຖືກອອກ, ແຕ່ໃນນີ້
ກໍລະນີປະກອບມີຈະໃຫ້ຄໍາຕອບກັບລູກຄ້າ distcc.
ຄໍາເຕືອນ: ເສັ້ນທາງ '/ເສັ້ນທາງ/ໄຟລ໌' ປ່ຽນ/ມາ ເຂົ້າໄປໃນ ທີ່ມີຢູ່ແລ້ວ / ບໍ່ ຕໍ່ໄປອີກແລ້ວ ຢູ່
ການເຕືອນໄພເຫຼົ່ານີ້ແມ່ນອອກເມື່ອໃຊ້ຕົວກະຕຸ້ນການປັບຄ່າສະຖິຕິ. ເນື່ອງຈາກວ່າ /PATH/FILE
ມີການປ່ຽນແປງ, ເຊີບເວີລວມມີການລຶບລ້າງແຄດຂອງມັນ; ເວີຊັນໃໝ່ຂອງໄຟລ໌ (ຫຼື
ຂາດມັນ) renders the include analysis invalid . ຂໍ້ຄວາມນີ້ສາມາດເປັນປົກກະຕິແລ້ວ
ບໍ່ສົນໃຈ; ມັນສະແດງເຖິງການໃຊ້ໄຟລ໌ທີ່ບໍ່ຄ່ອຍຊັດເຈນໂດຍລະບົບການກໍ່ສ້າງ.
ມັນແນະນໍາໃຫ້ແກ້ໄຂລະບົບການກໍ່ສ້າງເພື່ອບໍ່ໃຫ້ໄຟລ໌ຖືກຂຽນຄືນໃຫມ່.
ຄໍາເຕືອນ: ສໍາລັບການ translation ຫນ່ວຍບໍລິການ ..., ຊອກຫາ of ເອກະສານ ... ແກ້ໄຂ to ... ທີ່ ເສັ້ນທາງທີ່ແທ້ຈິງ is
...
ການເຕືອນນີ້ເກີດຂຶ້ນກັບ --path_observation_re ເມື່ອ realpath ໃໝ່ທີ່ກົງກັບ a
ແຫຼ່ງ ຫຼື header file ແມ່ນສັງເກດເຫັນ.
DISTCC ຄວາມແຕກຕ່າງ ອາການ
ການໂຕ້ຕອບລະຫວ່າງລະບົບການກໍ່ສ້າງ, distcc, ແລະເຄື່ອງແມ່ຂ່າຍລວມແມ່ນບາງຢ່າງ
ຊັບຊ້ອນ. ເມື່ອຄໍາສັ່ງ distcc ໄດ້ຮັບການລວບລວມທີ່ລົ້ມເຫລວຈາກເຄື່ອງແມ່ຂ່າຍຫ່າງໄກສອກຫຼີກມັນ
ພະຍາຍາມລວບລວມຂໍ້ມູນຢູ່ໃນທ້ອງຖິ່ນ. ພາກນີ້ເວົ້າເຖິງສາເຫດຂອງຄວາມແຕກຕ່າງ
ລະຫວ່າງການລວບລວມຫ່າງໄກສອກຫຼີກແລະທ້ອງຖິ່ນ. ສິ່ງເຫຼົ່ານີ້ຖືກໝາຍໄວ້ໂດຍຂໍ້ຄວາມ demotion:
__________ ຄຳເຕືອນ: ... ຮູບແບບປັ໊ມ ການລວບລວມ ລົ້ມເຫລວ on ເຊີບເວີ, ແຕ່ succeeded ຢູ່ໃນທ້ອງຖິ່ນ.
__________Distcc-pump ແມ່ນ ຖືກປົດປ່ອຍ to ທໍາມະດາ mode ເບິ່ງ ໄດ້ Distcc Discrepancy ອາການ
ສ່ວນ in ໄດ້ include_server(1) ຜູ້ຊາຍ ຫນ້າ.
script distcc-pump ອອກຂໍ້ຄວາມນີ້ໃນຕອນທ້າຍຂອງການກໍ່ສ້າງ. ນີ້ຫມາຍຄວາມວ່າສໍາລັບຢູ່
ຢ່າງຫນ້ອຍຫນຶ່ງຄໍາຮ້ອງ distcc ການລວບລວມທ້ອງຖິ່ນສໍາເລັດຫຼັງຈາກການລວບລວມຫ່າງໄກສອກຫຼີກ
ລົ້ມເຫລວ. ແຕ່ລະຄໍາຮ້ອງຂອງ distcc ທີ່ຄວາມແຕກຕ່າງດັ່ງກ່າວເກີດຂຶ້ນໃນທາງກັບກັນຍັງອອກ a
ຂໍ້ຄວາມເຊັ່ນ:
ຄໍາເຕືອນ: ໄລຍະໄກ ການລວບລວມ of '...' ລົ້ມເຫລວ, ພະຍາຍາມໃໝ່ ຢູ່ໃນທ້ອງຖິ່ນ ແລະ ໄດ້ຮັບ a ທີ່ແຕກຕ່າງກັນ ຜົນໄດ້ຮັບ.
ການເລື່ອນເຮັດໃຫ້ການຮຽກຮ້ອງ distcc ຕໍ່ມາໃຊ້ໂຫມດ distcc ທຳມະດາ. ດັ່ງນັ້ນ
preprocessing ຈະຈັດຂຶ້ນໃນເຄື່ອງທ້ອງຖິ່ນສໍາລັບສ່ວນທີ່ເຫຼືອຂອງການກໍ່ສ້າງ. ນີ້
ເຕັກນິກປ້ອງກັນການສ້າງຊ້າຫຼາຍບ່ອນທີ່ການລວບລວມທັງຫມົດສິ້ນສຸດລົງໃນເຄື່ອງຈັກທ້ອງຖິ່ນ
ຫຼັງຈາກຄວາມລົ້ມເຫຼວຫ່າງໄກສອກຫຼີກ.
ແນ່ນອນ, ຖ້າການລວບລວມຂໍ້ມູນໃນທ້ອງຖິ່ນລົ້ມເຫລວຫຼັງຈາກຄວາມລົ້ມເຫລວຈາກໄລຍະໄກ, ຫຼັງຈາກນັ້ນ distcc
ການເອີ້ນອອກດ້ວຍສະຖານະທີ່ບໍ່ແມ່ນສູນຂອງການລວບລວມທ້ອງຖິ່ນ. ຂໍ້ຄວາມຜິດພາດ
ພິມອອກແມ່ນຍັງແມ່ນຂອງການສັງລວມທ້ອງຖິ່ນ.
ພຶດຕິກໍາການຫຼຸດລົງສໍາລັບຮູບແບບ distcc-pump ກັບການສັງລວມໃນທ້ອງຖິ່ນສາມາດຖືກປິດການທໍາງານໂດຍການຕັ້ງຄ່າ
ຕົວແປສະພາບແວດລ້ອມ DISTCC_FALLBACK ເປັນ 1, ເຊິ່ງເຮັດໃຫ້ຄຳສັ່ງ distcc ລົ້ມເຫລວໃນທັນທີ.
ເນື່ອງຈາກການລວບລວມຂໍ້ມູນທາງໄກໄດ້ລົ້ມເຫລວ. ການຕັ້ງຄ່ານີ້ແມ່ນເປັນປະໂຫຍດຫຼາຍສໍາລັບການ debugging ວ່າເປັນຫຍັງ
ການລວບລວມຂໍ້ມູນທາງໄກຜິດພາດ, ເພາະວ່າດຽວນີ້ຜົນຜະລິດຈາກເຄື່ອງແມ່ຂ່າຍຈະຖືກພິມອອກ.
ຕໍ່ໄປ, ພວກເຮົາປຶກສາຫາລືກ່ຽວກັບສາເຫດທີ່ເປັນໄປໄດ້ຂອງຄວາມແຕກຕ່າງ.
ໄດ້ ຜູ້ໃຊ້ ປ່ຽນແປງ a ແຫຼ່ງ or header ເອກະສານ ໃນລະຫວ່າງການ ໄດ້ ກໍ່ສ້າງ.
ນີ້ເຮັດໃຫ້ຜົນໄດ້ຮັບທີ່ບໍ່ສອດຄ່ອງແນ່ນອນ.
A ແຫຼ່ງ or header ເອກະສານ ປ່ຽນແປງ ໃນລະຫວ່າງການ ໄດ້ ກໍ່ສ້າງ.
ລະບົບການກໍ່ສ້າງຂຽນຄືນໄຟລ໌. ສໍາລັບ Linux kernel 2.6, ນີ້ເກີດຂຶ້ນສໍາລັບ
'include/linux/compile.h' ແລະ 'include/asm/asm-offsets.h'. ເງື່ອນໄຂນີ້ຖືກແກ້ໄຂ
ໂດຍການແຈ້ງໃຫ້ເຊີບເວີລວມຮູ້ວ່າມັນຕ້ອງຣີເຊັດແຄສຂອງມັນເມື່ອມີສະຖານະໃດນຶ່ງ
ຂອງໄຟລ໌ການປ່ຽນແປງ. ຕົວຈິງແລ້ວ, ນີ້ແມ່ນເຮັດໄດ້ໂດຍການລວບລວມໄຟລ໌ຢູ່ໃນຈໍ້າສອງເມັດ.
ລາຍຊື່ທີ່ແຍກອອກແລ້ວຕັ້ງຄໍາສັ່ງ INCLUDE_SERVER_ARGS ຄືກັບໃນ:
include_server_args="--stat_reset_triggers=include/linux/compile.h:include/asm/asm-
offsets.h"
A header ເອກະສານ is ອາດຈະເປັນ ລວມທັງ ແຕ່ ບໍ່ ບໍ່ ມີຢູ່, ແລະ is ຫຼັງຈາກນັ້ນ ຕໍ່ມາ ລວມຢູ່.
ອັນນີ້ເກີດຂຶ້ນເມື່ອບາງ header foo.h ປະກອບມີໄຟລ໌ header ອື່ນ trick.h, ແຕ່
ໄຟລ໌ trick.h ຍັງບໍ່ທັນໄດ້ຖືກສ້າງຂຶ້ນ ແລະຕົວຈິງແລ້ວການລວມເອົານັ້ນຖືກລະເລີຍ
ເນື່ອງຈາກວ່າຄໍາສັ່ງ preprocessing. ລວມເອົາເຊີບເວີຈະສືບສວນສໍາລັບ
ທີ່ມີຢູ່ແລ້ວຂອງ trick.h, ເນື່ອງຈາກວ່າມັນ overapproximates ວິທີການທີ່ເປັນໄປໄດ້ທັງຫມົດຄໍາແນະນໍາ
ປະເມີນຕົວຈິງ. ໄຟລ໌ trick.h ຖືກກໍານົດວ່າບໍ່ມີ. ຖ້າມັນຕໍ່ມາ
ສ້າງຂຶ້ນ, ແລະຫຼັງຈາກນັ້ນລວມຢ່າງແທ້ຈິງ, ຫຼັງຈາກນັ້ນເຄື່ອງແມ່ຂ່າຍລວມຈະເຊື່ອຜິດ
ວ່າໄຟລ໌ຍັງບໍ່ມີ. ການແກ້ໄຂບັນຫານີ້ແມ່ນເພື່ອເຮັດໃຫ້
ສ້າງລະບົບສ້າງ trick.h ກ່ອນທີ່ຈະມີໄຟລ໌ header ຄັ້ງທໍາອິດ
ທີ່ເຮັດໃຫ້ການອ້າງອີງ syntactic ກັບ trick.h
ໄດ້ ປະກອບດ້ວຍ ເຄື່ອງແມ່ຂ່າຍ ແມ່ນ ເລີ່ມຕົ້ນ ກັບ --unsafe_absolute_includes.
ນີ້ແມ່ນບັນຫາຖ້າມີໄຟລ໌ header ຢູ່ໃນທ້ອງຖິ່ນທີ່ບໍ່ມີຢູ່ຫ່າງໄກສອກຫຼີກແລະ
ທີ່ຖືກນໍາໃຊ້ຕົວຈິງ. ດັ່ງກ່າວປະກອບມີມັກຈະຖືກປົກປ້ອງໂດຍເງື່ອນໄຂ
ຄໍາແນະນໍາທີ່ປະເມີນດັ່ງນັ້ນຖືກນໍາໃຊ້ໃນຕົວຈິງພຽງແຕ່ສະເພາະແລະເລື້ອຍໆ
ເວທີທີ່ບໍ່ທໍາມະດາ. ຖ້າທ່ານບໍ່ໄດ້ລວບລວມສໍາລັບເວທີດັ່ງກ່າວ, ມັນອາດຈະເປັນ
ຖືກຕ້ອງການນໍາໃຊ້ --unsafe_absolute_include.
ໄດ້ ປະກອບດ້ວຍ ເຄື່ອງແມ່ຂ່າຍ ມີ ຄິດໄລ່ ໄດ້ ຜິດພາດ ລວມມີ.
ພວກເຮົາບໍ່ຮູ້ສະຖານະການດັ່ງກ່າວ.
ອອກ ລະຫັດ
ລະຫັດທາງອອກຂອງ include_server.py ປົກກະຕິແລ້ວແມ່ນ 0. ວ່າລວມເອົາເຊີບເວີໄດ້ເລີ່ມຂຶ້ນແລ້ວ
ຖືກສື່ສານຢ່າງຖືກຕ້ອງໂດຍຜ່ານການມີຢູ່ຂອງ pid_file.
ENVIRONMENT ຄວາມຮັບຜິດຊອບ
DISTCC_EMAILLOG_WHOM_TO_BLAME ທີ່ຢູ່ອີເມວທີ່ຈະໃຊ້ສໍາລັບການລວມເອົາເຄື່ອງແມ່ຂ່າຍອັດຕະໂນມັດ
ອີເມວ. ຄ່າເລີ່ມຕົ້ນແມ່ນ 'distcc-pump-errors' (ເຊິ່ງເປັນທີ່ຢູ່ອີເມວທີ່ອາດຈະເປັນ
ບໍ່ມີຢູ່ໃນໂດເມນຂອງທ່ານ).
ນອກຈາກນັ້ນ, ການຮຽກຮ້ອງຂອງ compiler ອາດຈະໃຊ້ຕົວແປສະພາບແວດລ້ອມເພີ່ມເຕີມ.
ໃຊ້ include_server ອອນລາຍໂດຍໃຊ້ບໍລິການ onworks.net