GNU Make Book - Demystifying Linux Build Automation

ເຊັ່ນດຽວກັນກັບລາຍລັກອັກສອນກ່ຽວກັບ Linux ແລະການຂຽນການທົບທວນຄືນແລະ tutorials ກ່ຽວກັບການແຜ່ກະຈາຍແລະເຄື່ອງມືຂ້າພະເຈົ້າຍັງມີສ່ວນຮ່ວມຫຼາຍໃນການພັດທະນາຊອບແວ. ແຕ່ຫນ້າເສຍດາຍ, 99.9% ຂອງການພັດທະນາຊອບແວທີ່ເກີດຂຶ້ນໃນເວທີ Windows.

ຂ້ອຍມີປະສົບການກວ່າ 20 ປີເປັນ C ++, Visual Basic, VB.NET, ແລະ C # ຜູ້ພັດທະນາແລະຂ້ອຍຍັງເປັນ hand dab ກັບ SQL Server ທັງເປັນ DBA ແລະຜູ້ພັດທະນາ.

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

ຂ້າພະເຈົ້າແນ່ນອນຄືກັບ tinkering ກັບ scripting ແລະຂຽນໂຄງການຂະຫນາດນ້ອຍຄີກ. ເຫຼົ່ານີ້ແມ່ນປົກກະຕິສໍາລັບ ໂຄງການ ໄຟຟ້າທີ່ອີງໃສ່ Raspberry PI .

ສິ່ງຫນຶ່ງທີ່ນັກພັດທະນາຈໍານວນຫຼາຍໃນເວທີ Windows ຈະມີບັນຫາໃນເວລາທີ່ພວກເຂົາທໍາອິດຍ້າຍໄປສູ່ Linux ແມ່ນການຮຽນຮູ້ກ່ຽວກັບເຄື່ອງມືທີ່ຈໍາເປັນໃນການກໍ່ສ້າງແລະການຫຸ້ມຫໍ່ຄໍາຮ້ອງສະຫມັກ.

ປະເພດທີ່ງ່າຍທີ່ສຸດໃນການພັດທະນາແມ່ນການນໍາໃຊ້ເວັບໂດຍທົ່ວໄປເນື່ອງຈາກພວກເຂົາບໍ່ຈໍາເປັນຕ້ອງມີລະຫັດການລວບລວມ (PHP, Perl, Python) ແລະໄຟລ໌ທີ່ຖືກກໍານົດໄວ້ໃນສະຖານທີ່ທີ່ກໍານົດໄວ້ໃນເວັບໄຊຕ໌.

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

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

ປື້ມ GNU ເຮັດໃຫ້ໄດ້ຮັບການຂຽນໂດຍ John Graham-Cumming ເພື່ອຊ່ວຍໃຫ້ຜູ້ໃຊ້ GNU ເຮັດໃຫ້ມີຄວາມແນ່ນອນດ້ານຄວາມສັບສົນທີ່ກ່ຽວຂ້ອງກັບ GNU Make.

ປື້ມແມ່ນແບ່ງອອກເປັນ 6 ພາກ:

  1. ພື້ນຖານທີ່ໄດ້ທົບທວນຄືນ
  2. Makefile Debugging
  3. ການກໍ່ສ້າງແລະການກໍ່ສ້າງ
  4. Pitfalls and Problems
  5. Pushing Envelope
  6. The GNU Make Standard Library

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

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

ບົດທີ 1 ກວມເອົາພື້ນຖານທັງຫມົດເຊັ່ນ: ການນໍາໃຊ້ຕົວແປ, ສະພາບແວດລ້ອມທີ່ນໍາໃຊ້ໂດຍຄໍາສັ່ງແລະສະພາບແວດລ້ອມ $ (Shell). ໃນຖານະເປັນພາກຍ້າຍສຸດທ່ານໄດ້ເຂົ້າໄປໃນຫົວຂໍ້ຂອງການປຽບທຽບ, ລາຍການ, ແລະຫນ້າທີ່ກໍານົດຜູ້ໃຊ້ກໍານົດ.

ຖ້າທ່ານໄດ້ໃຊ້ GNU ເຮັດໃນເວລານ້ອຍໆແຕ່ຍັງບໍ່ໄດ້ພິຈາລະນາຕົວທ່ານເອງເປັນຜູ້ຊ່ຽວຊານມີຄໍາແນະນໍາແລະຄໍາແນະນໍາທີ່ດີທີ່ຊ່ວຍໃຫ້ທ່ານເຂົ້າໃຈຄວາມສັບສົນທີ່ອາດຈະບໍ່ຊັດເຈນທັນທີ.

ບົດທີສອງຈະເປັນພະເຈົ້າສໍາລັບຜູ້ທີ່ທ່ານໄດ້ພະຍາຍາມທີ່ຈະຫຼອກລວງຄວາມຜິດພາດໃນການສ້າງສະຄິບ. ສ່ວນ "ແກ້ໄຂ Makefile" ແມ່ນເຕັມໄປດ້ວຍຄໍາແນະນໍາທີ່ດີເລີດແລະຄໍາແນະນໍາສໍາລັບການແກ້ໄຂ Makefiles ແລະປະກອບມີພາກສ່ວນກ່ຽວກັບມູນຄ່າການປ່ຽນແປງຂອງພິມແລະແມ້ກະທັ້ງປະລິມານມູນຄ່າຂອງທຸກຕົວປ່ຽນແປງ. ນອກເຫນືອໄປຈາກບົດສົນທະນາ, ມີຄູ່ມືກ່ຽວກັບ GNU Debugger ເຊິ່ງທ່ານສາມາດນໍາໃຊ້ເພື່ອກ້າວຜ່ານສະຄິບຕ່າງໆ.

ບົດທີທີສາມປະກອບມີຕົວຢ່າງ makefiles ແຕ່ຫຼາຍກ່ວານັ້ນສະແດງໃຫ້ທ່ານຮູ້ວິທີສ້າງ Makefiles ທີ່ທ່ານສາມາດດໍາເນີນການອີກເທື່ອຫນຶ່ງແລະອີກຄັ້ງ.

"ຄວາມຂົມຂື່ນແລະບັນຫາ" ເບິ່ງຄວາມແຕກຕ່າງລະຫວ່າງເງື່ອນໄຂທີ່ແນ່ນອນເຊັ່ນ: = ແລະ: =, ແລະ ifndef ແລະ? =.

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

ໃນເວລາທີ່ຂ້າພະເຈົ້າໄດ້ເຂົ້າໄປໃນ "Pushing Envelope" ບົດພາກຕາຂອງຂ້າພະເຈົ້າ glazed ກວ່າຮ່ອງ.

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

ບັນຫາແມ່ນວ່າບາງຄັ້ງເມື່ອຜູ້ຊ່ຽວຊານກ່ຽວກັບເລື່ອງທີ່ພະຍາຍາມຂຽນບາງສິ່ງບາງຢ່າງພວກເຂົາເຈົ້າມີ "ໂອ້ຍມັນງ່າຍ, ທັງຫມົດທີ່ທ່ານຕ້ອງເຮັດຄື .... " aura ກ່ຽວກັບພວກມັນ.

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

ແມ່ຍິງໃນໂທລະສັບກ່າວວ່າ, "ໂອ້ຍດີ, ຂ້ອຍຈະສົ່ງຈົດຫມາຍໃຫມ່ໃຫ້ເຈົ້າ".

ຂ້າພະເຈົ້າໄດ້ກ່າວວ່າ "ໂອ້ຍຂ້ອຍຕ້ອງມີຄວາມເຫມາະສົມກັບມັນເອງ? ແມ່ນສິ່ງທີ່ຂ້ອຍສາມາດເຮັດໄດ້".

ການຕອບສະຫນອງແມ່ນ "ແນ່ນອນທ່ານສາມາດເຮັດໄດ້, ທັງຫມົດທີ່ທ່ານຕ້ອງເຮັດແມ່ນເອົາອອກຈາກປະຕູ, ເຫມາະກັບປະທັບຕາແລະເຮັດໃຫ້ປະຕູຄືນ."

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

ມີຫນັງສືເຫຼັ້ມນີ້, ຂ້າພະເຈົ້າຮູ້ສຶກວ່າທ່ານຕ້ອງການປື້ມອື່ນແລະຈໍານວນເງິນທີ່ມີປະສົບການຂຽນ Makefiles ກ່ອນທີ່ທ່ານຈະເຫັນວ່າມັນເປັນປະໂຫຍດ.

ຂ້ອຍຄິດວ່າຄໍາແນະນໍາ, ຄໍາແນະນໍາແລະຄວາມຮູ້ທີ່ສະຫນອງໃຫ້ຊ່ວຍຄົນບາງຄົນເວົ້າວ່າ "ໂອ້, ເພາະສະນັ້ນຈຶ່ງເຮັດແນວນັ້ນ" ຫຼື "ຂ້ອຍບໍ່ຮູ້ວ່າເຈົ້າຈະເຮັດແນວນັ້ນໄດ້ແນວໃດ".

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