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

Ad


OnWorks favicon

dpkg-buildflags - ອອນລາຍໃນຄລາວ

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

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

ໂຄງການ:

NAME


dpkg-buildflags - ສົ່ງຄືນການສ້າງທຸງເພື່ອໃຊ້ໃນລະຫວ່າງການສ້າງຊຸດ

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


dpkg-buildflags [ທາງເລືອກ... ] [ຄໍາສັ່ງ]

ລາຍລະອຽດ


dpkg-buildflags ເປັນເຄື່ອງມືເພື່ອດຶງທຸງການລວບລວມເພື່ອໃຊ້ໃນລະຫວ່າງການສ້າງ Debian
ຊຸດ. ທຸງເລີ່ມຕົ້ນແມ່ນຖືກກໍານົດໂດຍຜູ້ຂາຍແຕ່ພວກເຂົາສາມາດຂະຫຍາຍ / ຂ້າມໄດ້
ໃນ​ຫຼາຍ​ວິ​ທີ​ການ​:

1. ລະບົບທົ່ວກັບ /etc/dpkg/buildflags.conf;

2. ສໍາລັບຜູ້ໃຊ້ປະຈຸບັນທີ່ມີ $XDG_CONFIG_HOME/dpkg/buildflags.conf ບ່ອນທີ່
$XDG_CONFIG_HOME ເລີ່ມຕົ້ນເປັນ $HOME/.config;

3. ຊົ່ວຄາວໂດຍຜູ້ໃຊ້ກັບຕົວແປສະພາບແວດລ້ອມ (ເບິ່ງພາກ ENVIRONMENT);

4. ແບບເຄື່ອນໄຫວໂດຍຜູ້ຮັກສາຊຸດກັບຕົວແປສະພາບແວດລ້ອມທີ່ກໍານົດໄວ້ໂດຍຜ່ານ
debian/ກົດລະບຽບ (ເບິ່ງພາກ ENVIRONMENT).

ໄຟລ໌ການຕັ້ງຄ່າສາມາດມີສອງປະເພດຂອງຄໍາສັ່ງ:

SET ທຸງ ມູນຄ່າ
ລົບລ້າງທຸງທີ່ມີຊື່ ທຸງ ທີ່​ຈະ​ມີ​ຄຸນ​ຄ່າ​ ມູນຄ່າ.

ແຖບ ທຸງ ມູນຄ່າ
ແຖບຈາກທຸງທີ່ມີຊື່ ທຸງ ທຸງການກໍ່ສ້າງທັງຫມົດທີ່ລະບຸໄວ້ໃນ ມູນຄ່າ.

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

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

ໄຟລ໌ການຕັ້ງຄ່າສາມາດມີຄໍາຄິດເຫັນກ່ຽວກັບແຖວທີ່ເລີ່ມຕົ້ນດ້ວຍ hash (#). ຫວ່າງເປົ່າ
ສາຍຍັງຖືກລະເລີຍ.

ສາມາດ


-- ຖິ້ມ ພິມເພື່ອສົ່ງອອກມາດຕະຖານການລວບລວມທຸງທັງໝົດ ແລະຄ່າຂອງພວກມັນ. ມັນພິມທຸງຫນຶ່ງ
ຕໍ່​ເສັ້ນ​ແຍກ​ອອກ​ຈາກ​ຄ່າ​ຂອງ​ຕົນ​ໂດຍ​ເຄື່ອງ​ຫມາຍ​ເທົ່າ​ທຽມ​ກັນ ("ທຸງ=ມູນຄ່າ”). ນີ້​ແມ່ນ
ຄຳສັ່ງເລີ່ມຕົ້ນ.

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

--ສະຖານະ
ສະແດງຂໍ້ມູນໃດໆທີ່ສາມາດເປັນປະໂຫຍດເພື່ອອະທິບາຍພຶດຕິກໍາຂອງ
dpkg-buildflags (ນັບຕັ້ງແຕ່ dpkg 1.16.5): ຕົວແປສະພາບແວດລ້ອມທີ່ກ່ຽວຂ້ອງ, ປະຈຸບັນ
ຜູ້ຂາຍ, ສະຖານະຂອງທຸງຄຸນນະສົມບັດທັງຫມົດ. ນອກຈາກນີ້ພິມທຸງ compiler ຜົນໄດ້ຮັບກັບ
ຕົ້ນກໍາເນີດຂອງພວກມັນ.

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

--ສົ່ງອອກ=ຮູບແບບ
ພິມເປັນຄໍາສັ່ງຜົນຜະລິດມາດຕະຖານທີ່ສາມາດຖືກນໍາໃຊ້ເພື່ອສົ່ງອອກການລວບລວມທັງຫມົດ
ທຸງສໍາລັບບາງເຄື່ອງມືໂດຍສະເພາະ. ຖ້າ ຮູບແບບ ມູນ​ຄ່າ​ແມ່ນ​ບໍ່​ໄດ້​ໃຫ້​, sh ແມ່ນສົມມຸດ.
ມີແຕ່ທຸງການລວບລວມທີ່ເລີ່ມຕົ້ນດ້ວຍຕົວພິມໃຫຍ່ເທົ່ານັ້ນ, ອື່ນ
ຖືວ່າບໍ່ເໝາະສົມກັບສິ່ງແວດລ້ອມ. ຮູບແບບທີ່ຮອງຮັບ:

sh ຄໍາສັ່ງ Shell ເພື່ອກໍານົດແລະສົ່ງອອກທຸງການລວບລວມທັງຫມົດໃນ
ສະພາບແວດລ້ອມ. ຄ່າທຸງຖືກອ້າງອີງເພື່ອໃຫ້ຜົນຜະລິດແມ່ນກຽມພ້ອມ
ການ​ປະ​ເມີນ​ຜົນ​ໂດຍ​ແກະ​.

cmdline
ການໂຕ້ຖຽງທີ່ຈະຜ່ານໄປຫາເສັ້ນຄໍາສັ່ງຂອງໂຄງການກໍ່ສ້າງເພື່ອນໍາໃຊ້ທັງຫມົດ
ທຸງການລວບລວມ (ນັບຕັ້ງແຕ່ dpkg 1.17.0). ຄ່າທຸງແມ່ນອ້າງອີງໃນ shell
syntax

configure
ນີ້ແມ່ນນາມແຝງມໍລະດົກສໍາລັບ cmdline.

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

--ໄດ້ ທຸງ
ພິມມູນຄ່າຂອງທຸງຢູ່ໃນຜົນຜະລິດມາດຕະຖານ. ອອກດ້ວຍ 0 ຖ້າທຸງແມ່ນຮູ້ຈັກ
ຖ້າບໍ່ດັ່ງນັ້ນອອກດ້ວຍ 1.

--ຕົ້ນກຳເນີດ ທຸງ
ພິມຕົ້ນກຳເນີດຂອງຄ່າທີ່ສົ່ງຄືນໂດຍ --ໄດ້. ອອກດ້ວຍ 0 ຖ້າທຸງ
ເປັນທີ່ຮູ້ຈັກຖ້າບໍ່ດັ່ງນັ້ນການອອກດ້ວຍ 1. ແຫຼ່ງກຳເນີດສາມາດເປັນໜຶ່ງໃນຄ່າຕໍ່ໄປນີ້:

ຜູ້ຂາຍ ທຸງຕົ້ນສະບັບທີ່ກໍານົດໄວ້ໂດຍຜູ້ຂາຍຖືກສົ່ງຄືນ;

ລະບົບ ທຸງຖືກຕັ້ງ / ແກ້ໄຂໂດຍການຕັ້ງຄ່າທົ່ວລະບົບ;

ຜູ້ໃຊ້ ທຸງຖືກຕັ້ງ/ແກ້ໄຂໂດຍການຕັ້ງຄ່າສະເພາະຂອງຜູ້ໃຊ້;

ປະມານ ທຸງຖືກຕັ້ງ/ແກ້ໄຂໂດຍການຕັ້ງຄ່າສະເພາະສະພາບແວດລ້ອມ.

--query-ຄຸນສົມບັດ ພື້ນທີ່
ພິມຄຸນສົມບັດທີ່ເປີດໃຊ້ງານສໍາລັບພື້ນທີ່ທີ່ກໍານົດ (ນັບຕັ້ງແຕ່ dpkg 1.16.2). ເທົ່ານັ້ນ
ພື້ນທີ່ທີ່ໄດ້ຮັບການຍອມຮັບໃນປັດຈຸບັນກ່ຽວກັບ Debian ແລະອະນຸພັນແມ່ນ qa, ແຜ່ພັນໄດ້, ອະນາໄມ
ແລະ ແຂງ, ເບິ່ງ ຄຸນ​ນະ​ສົມ​ບັດ AREAS ພາກ​ສ່ວນ​ສໍາ​ລັບ​ລາຍ​ລະ​ອຽດ​ເພີ່ມ​ເຕີມ​. ອອກດ້ວຍ 0 ຖ້າໄດ້
ພື້ນທີ່ເປັນທີ່ຮູ້ຈັກຖ້າບໍ່ດັ່ງນັ້ນທາງອອກດ້ວຍ 1.

ຜົນຜະລິດແມ່ນຢູ່ໃນຮູບແບບ RFC822, ມີພາກສ່ວນຫນຶ່ງຕໍ່ລັກສະນະ. ຍົກ​ຕົວ​ຢ່າງ:

ຄຸນນະສົມບັດ: pie
ເປີດໃຊ້: ບໍ່

ຄຸນນະສົມບັດ: stackprotector
ເປີດໃຊ້ແລ້ວ: ແມ່ນແລ້ວ

- ຊ່ວຍ ສະແດງຂໍ້ຄວາມການນໍາໃຊ້ແລະອອກ.

- ການປ່ຽນແປງ
ສະແດງສະບັບແລະອອກ.

ສະ ໜັບ ສະ ໜູນ ດອກໄມ້


ປ້າຍກຳກັບ ທາງເລືອກສໍາລັບ C compiler. ຄ່າເລີ່ມຕົ້ນທີ່ຕັ້ງໂດຍຜູ້ຂາຍປະກອບມີ -g ແລະ
ລະດັບການເພີ່ມປະສິດທິພາບເລີ່ມຕົ້ນ (-O2 ປົກກະຕິແລ້ວ, ຫຼື -O0 ຖ້າຫາກວ່າ DEB_BUILD_OPTIONS
ຕົວແປສະພາບແວດລ້ອມກໍານົດ ໂນປ).

CPPFLAGS
ທາງເລືອກສໍາລັບ C preprocessor. ຄ່າເລີ່ມຕົ້ນ: ຫວ່າງເປົ່າ.

CXXFLAGS
ທາງເລືອກສໍາລັບ C++ compiler. ຄື​ກັນ​ກັບ ປ້າຍກຳກັບ.

OBJCFLAGS
ທາງເລືອກສໍາລັບ Objective C compiler. ຄື​ກັນ​ກັບ ປ້າຍກຳກັບ.

OBJCXXFLAGS
ທາງເລືອກສໍາລັບ Objective C++ compiler. ຄື​ກັນ​ກັບ CXXFLAGS.

GCJFLAGS
ທາງເລືອກສໍາລັບ GNU Java compiler (gcj). ຊຸດຍ່ອຍຂອງ ປ້າຍກຳກັບ.

ທຸງ ທາງເລືອກສໍາລັບ Fortran 77 compiler. ຊຸດຍ່ອຍຂອງ ປ້າຍກຳກັບ.

FCFLAGS
ທາງເລືອກສໍາລັບ Fortran 9x compiler. ຄື​ກັນ​ກັບ ທຸງ.

LDFLAGS
ທາງ​ເລືອກ​ທີ່​ຖືກ​ສົ່ງ​ໄປ​ຫາ compiler ໃນ​ເວ​ລາ​ທີ່​ການ​ເຊື່ອມ​ຕໍ່​ການ​ປະ​ຕິ​ບັດ​ຫຼື​ການ​ແບ່ງ​ປັນ​ວັດ​ຖຸ (ຖ້າ​ຫາກ​ວ່າ​
linker ແມ່ນເອີ້ນວ່າໂດຍກົງ, ຫຼັງຈາກນັ້ນ -ວ ແລະ , ຕ້ອງໄດ້ຖອດອອກຈາກທາງເລືອກເຫຼົ່ານີ້).
ຄ່າເລີ່ມຕົ້ນ: ຫວ່າງເປົ່າ.

ທຸງໃຫມ່ອາດຈະຖືກເພີ່ມໃນອະນາຄົດຖ້າຄວາມຕ້ອງການເກີດຂື້ນ (ຕົວຢ່າງເພື່ອສະຫນັບສະຫນູນອື່ນໆ
ພາສາ).

ຄຸນ​ນະ​ສົມ​ບັດ AREAS


ຄຸນ​ນະ​ສົມ​ບັດ​ຂອງ​ແຕ່​ລະ​ເຂດ​ສາ​ມາດ​ໄດ້​ຮັບ​ການ​ເປີດ​ໃຊ້​ງານ​ແລະ​ປິດ​ການ​ທໍາ​ງານ​ໃນ​ DEB_BUILD_OPTIONS ແລະ
DEB_BUILD_MAINT_OPTIONS ຄ່າພື້ນທີ່ຂອງຕົວແປສະພາບແວດລ້ອມດ້ວຍ '+'ແລະ'-' ຕົວ​ປັບ​ປຸງ​ແກ້​ໄຂ​.
ຕົວຢ່າງ, ເພື່ອເປີດໃຊ້ງານ ແຂງ ຄຸນນະສົມບັດ "pie" ແລະປິດການທໍາງານຂອງຄຸນສົມບັດ "fortify" ທ່ານ
ສາມາດເຮັດໄດ້ໃນ debian/ກົດລະບຽບ:

ສົ່ງອອກ DEB_BUILD_MAINT_OPTIONS=hardening=+pie,-fortify

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

ສົ່ງອອກ DEB_BUILD_MAINT_OPTIONS=hardening=-ທັງໝົດ,+format,+fortify

qa
ທາງ​ເລືອກ​ທີ່​ໃຊ້​ເວ​ລາ​ສັງ​ລວມ​ຈໍາ​ນວນ​ຫນຶ່ງ (ລາຍ​ລະ​ອຽດ​ຂ້າງ​ລຸ່ມ​ນີ້​) ສາ​ມາດ​ຖືກ​ນໍາ​ໃຊ້​ເພື່ອ​ຊ່ວຍ​ກວດ​ສອບ​ບັນ​ຫາ​ໃນ​
ລະຫັດແຫຼ່ງຫຼືລະບົບການກໍ່ສ້າງ.

bug ການ​ຕັ້ງ​ຄ່າ​ນີ້ (ປິດ​ການ​ໃຊ້​ງານ​ໂດຍ​ຄ່າ​ເລີ່ມ​ຕົ້ນ​) ເພີ່ມ​ທາງ​ເລືອກ​ການ​ເຕືອນ​ໄພ​ໃດ​ຫນຶ່ງ​ທີ່​ເຊື່ອ​ຖື​ໄດ້​ກວດ​ພົບ​
ລະຫັດແຫຼ່ງທີ່ມີບັນຫາ. ການເຕືອນໄພແມ່ນເປັນອັນຕະລາຍເຖິງຕາຍ.

canary ການຕັ້ງຄ່ານີ້ (ປິດການໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນ) ເພີ່ມຕົວເລືອກ canary dummy ໃສ່ທຸງກໍ່ສ້າງ, ດັ່ງນັ້ນ
ບັນທຶກການສ້າງສາມາດກວດສອບໄດ້ສໍາລັບວິທີການສ້າງທຸງຂະຫຍາຍພັນແລະອະນຸຍາດໃຫ້
ຊອກຫາການລະເວັ້ນການຕັ້ງຄ່າທຸງກໍ່ສ້າງປົກກະຕິ. ພຽງ​ແຕ່​ສະ​ຫນັບ​ສະ​ຫນູນ​ໃນ​ປັດ​ຈຸ​ບັນ​
ທຸງແມ່ນ CPPFLAGS, ປ້າຍກຳກັບ, OBJCFLAGS, CXXFLAGS ແລະ OBJCXXFLAGS ດ້ວຍທຸງຕັ້ງເປັນ
-D__DEB_CANARY_ທຸງ_id ແບບສຸ່ມ__, ແລະ LDFLAGS ຕັ້ງ​ຄ່າ -Wl,-z,deb-canary-id ແບບສຸ່ມ.

ອະນາໄມ
ຕົວເລືອກການລວບລວມເວລາຫຼາຍອັນ (ລາຍລະອຽດຂ້າງລຸ່ມນີ້) ສາມາດໃຊ້ເພື່ອຊ່ວຍອະນາໄມຜົນໄດ້ຮັບ
binary ຕ້ານການສໍ້ລາດບັງຫຼວງຂອງຫນ່ວຍຄວາມຈໍາ, ການຮົ່ວໄຫລຂອງຫນ່ວຍຄວາມຈໍາ, ການນໍາໃຊ້ຫຼັງຈາກຟຣີ, threading ເຊື້ອຊາດຂໍ້ມູນແລະ
ແມງໄມ້ພຶດຕິກໍາທີ່ບໍ່ໄດ້ກໍານົດ.

ທີ່ຢູ່
ການຕັ້ງຄ່ານີ້ (ປິດໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນ) ເພີ່ມ -fsanitize=ທີ່ຢູ່ to LDFLAGS ແລະ
-fsanitize=ທີ່ຢູ່ -fno-omit-frame-pointer to ປ້າຍກຳກັບ ແລະ CXXFLAGS.

ກະ​ທູ້ ການຕັ້ງຄ່ານີ້ (ປິດໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນ) ເພີ່ມ -fsanitize=ກະທູ້ to ປ້າຍກຳກັບ, CXXFLAGS ແລະ
LDFLAGS.

ຮົ່ວໄຫລ ການຕັ້ງຄ່ານີ້ (ປິດໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນ) ເພີ່ມ -fsanitize=ຮົ່ວ to LDFLAGS. ມັນໄດ້ຮັບ
ປິດການໃຊ້ງານອັດຕະໂນມັດຖ້າຫາກວ່າບໍ່ວ່າຈະ ທີ່ຢູ່ ຫຼື ກະ​ທູ້ ຄຸນນະສົມບັດໄດ້ຖືກເປີດໃຊ້, ເປັນ
ພວກເຂົາເຈົ້າຫມາຍເຖິງມັນ.

undefined
ການຕັ້ງຄ່ານີ້ (ປິດໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນ) ເພີ່ມ -fsanitize=ບໍ່ໄດ້ກຳນົດ to ປ້າຍກຳກັບ, CXXFLAGS
ແລະ LDFLAGS.

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

ຮູບແບບ ການຕັ້ງຄ່ານີ້ (ຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ) ເພີ່ມ -Wformat -Werror=format-security to ປ້າຍກຳກັບ,
CXXFLAGS, OBJCFLAGS ແລະ OBJCXXFLAGS. ນີ້ຈະເຕືອນກ່ຽວກັບສະຕຣິງຮູບແບບທີ່ບໍ່ຖືກຕ້ອງ
ໃຊ້, ແລະຈະລົ້ມເຫລວເມື່ອຟັງຊັນຮູບແບບຖືກນໍາໃຊ້ໃນວິທີທີ່ເປັນຕົວແທນທີ່ເປັນໄປໄດ້
ບັນຫາຄວາມປອດໄພ. ໃນປັດຈຸບັນ, ນີ້ເຕືອນກ່ຽວກັບການໂທຫາ printf ແລະ scanf ຫນ້າທີ່
ບ່ອນທີ່ string ຮູບແບບບໍ່ແມ່ນ string literal ແລະບໍ່ມີ argument ຮູບແບບ,
ຄືໃນ printf(foo); ແທນ​ທີ່ printf("%s", foo); ນີ້ອາດຈະເປັນຂຸມຄວາມປອດໄພຖ້າຫາກວ່າ
ຮູບແບບສະຕຣິງມາຈາກການປ້ອນຂໍ້ມູນທີ່ບໍ່ເຊື່ອຖື ແລະປະກອບດ້ວຍ '%n'.

ເສີມສ້າງ
ການຕັ້ງຄ່ານີ້ (ຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ) ເພີ່ມ -D_FORTIFY_SOURCE=2 to CPPFLAGS. ໃນລະຫວ່າງລະຫັດ
ການຜະລິດ compiler ຮູ້ຂໍ້ມູນຈໍານວນຫລາຍກ່ຽວກັບຂະຫນາດ buffer (ບ່ອນໃດ
ເປັນໄປໄດ້), ແລະພະຍາຍາມທົດແທນການໂທຟັງຊັນ buffer ຄວາມຍາວບໍ່ຈໍາກັດທີ່ບໍ່ປອດໄພ
ທີ່ມີຄວາມຍາວຈໍາກັດ. ນີ້ແມ່ນເປັນປະໂຫຍດໂດຍສະເພາະສໍາລັບລະຫັດເກົ່າ, cruffy.
ນອກຈາກນັ້ນ, ຮູບແບບສະຕຣິງໃນໜ່ວຍຄວາມຈຳທີ່ສາມາດຂຽນໄດ້ທີ່ມີ '%n' ຖືກບລັອກໄວ້. ຖ້າ
ຄໍາຮ້ອງສະຫມັກແມ່ນຂຶ້ນກັບສະຕຣິງຮູບແບບດັ່ງກ່າວ, ມັນຈະຕ້ອງໄດ້ຮັບການເຮັດວຽກປະມານ.

ໃຫ້ສັງເກດວ່າເພື່ອໃຫ້ທາງເລືອກນີ້ມີຜົນກະທົບໃດກໍ່ຕາມ, ແຫຼ່ງຕ້ອງຖືກລວບລວມດ້ວຍ
-O1 ຫຼືສູງກວ່າ. ຖ້າສະພາບແວດລ້ອມປ່ຽນແປງ DEB_BUILD_OPTIONS ປະກອບດ້ວຍ ໂນປ, ຫຼັງຈາກນັ້ນ
ເສີມສ້າງ ການ​ສະ​ຫນັບ​ສະ​ຫນູນ​ຈະ​ໄດ້​ຮັບ​ການ​ພິ​ການ​, ເນື່ອງ​ຈາກ​ການ​ເຕືອນ​ໄພ​ໃຫມ່​ອອກ​ໂດຍ glibc 2.16​
ແລະຕໍ່ມາ.

stackprotector
ການຕັ້ງຄ່ານີ້ (ຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນຖ້າ stackprotectorstrong ບໍ່ໄດ້ໃຊ້) ເພີ່ມ
-stack-protector --param=ssp-buffer-size=4 to ປ້າຍກຳກັບ, CXXFLAGS, OBJCFLAGS,
OBJCXXFLAGS, GCJFLAGS, ທຸງ ແລະ FCFLAGS. ນີ້ເພີ່ມການກວດສອບຄວາມປອດໄພຕໍ່ກັບ stack
ຂຽນທັບ. ນີ້ເຮັດໃຫ້ການໂຈມຕີລະຫັດສັກຢາທີ່ມີທ່າແຮງຫຼາຍເຂົ້າໄປໃນການເອົາລູກອອກ
ສະຖານະການ. ໃນກໍລະນີທີ່ດີທີ່ສຸດ, ນີ້ຈະປ່ຽນຄວາມອ່ອນແອຂອງການສີດລະຫັດເຂົ້າໄປໃນການປະຕິເສດ
ຂອງການບໍລິການຫຼືເຂົ້າໄປໃນບັນຫາທີ່ບໍ່ແມ່ນ (ຂຶ້ນກັບຄໍາຮ້ອງສະຫມັກ).

ຄຸນນະສົມບັດນີ້ຮຽກຮ້ອງໃຫ້ມີການເຊື່ອມຕໍ່ກັບ glibc (ຫຼືຜູ້ໃຫ້ບໍລິການອື່ນຂອງ
__stack_chk_fail), ດັ່ງນັ້ນຈໍາເປັນຕ້ອງໄດ້ພິການໃນເວລາທີ່ການກໍ່ສ້າງກັບ -nostdlib or
- freestanding ຫຼືຄ້າຍຄືກັນ.

stackprotectorstrong
ການຕັ້ງຄ່ານີ້ (ຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ) ເພີ່ມ -fstack-protector-strong to ປ້າຍກຳກັບ,
CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, ທຸງ ແລະ FCFLAGS. ອັນນີ້ແມ່ນເຂັ້ມແຂງຂຶ້ນ
ຕົວປ່ຽນແປງຂອງ stackprotector, ແຕ່ບໍ່ມີການລົງໂທດການປະຕິບັດທີ່ສໍາຄັນ.

ການປິດການໃຊ້ງານ stackprotector ຍັງຈະປິດການຕັ້ງຄ່ານີ້.

ຄຸນນະສົມບັດນີ້ມີຄວາມຕ້ອງການດຽວກັນກັບ stackprotector, ແລະນອກຈາກນັ້ນຍັງ
ຕ້ອງການ gcc 4.9 ແລະຕໍ່ມາ.

ເຣໂຣ ການຕັ້ງຄ່ານີ້ (ຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ) ເພີ່ມ -Wl,-z,relro to LDFLAGS. ໃນລະຫວ່າງໂຄງການ
ໂຫຼດ, ຫຼາຍພາກສ່ວນຄວາມຊົງຈໍາ ELF ຕ້ອງໄດ້ຮັບການລາຍລັກອັກສອນໂດຍຕົວເຊື່ອມຕໍ່. ທຸງນີ້
loader ເພື່ອເຮັດໃຫ້ພາກສ່ວນເຫຼົ່ານີ້ອ່ານໄດ້ເທົ່ານັ້ນກ່ອນທີ່ຈະຫັນປ່ຽນການຄວບຄຸມໄປ
ໂຄງການ. ໂດຍສະເພາະແມ່ນນີ້ປ້ອງກັນການໂຈມຕີ GOT overwrite. ຖ້າທາງເລືອກນີ້ແມ່ນ
ພິການ, bindnow ຈະກາຍເປັນຄົນພິການເຊັ່ນດຽວກັນ.

bindnow
ການຕັ້ງຄ່ານີ້ (ປິດໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນ) ເພີ່ມ -Wl,-z, ດຽວນີ້ to LDFLAGS. ໃນ​ລະ​ຫວ່າງ​ການ​ໂຫຼດ​ໂຄງ​ການ​,
ສັນ​ຍາ​ລັກ​ເຄື່ອນ​ໄຫວ​ທັງ​ຫມົດ​ແມ່ນ​ໄດ້​ຮັບ​ການ​ແກ້​ໄຂ​, ອະ​ນຸ​ຍາດ​ໃຫ້​ສໍາ​ລັບ PLT ທັງ​ຫມົດ​ທີ່​ຈະ​ໄດ້​ຮັບ​ການ​ຫມາຍ​ອ່ານ​.
ເທົ່ານັ້ນ (ເນື່ອງມາຈາກ ເຣໂຣ ຂ້າງເທິງ). ທາງເລືອກບໍ່ສາມາດຖືກເປີດໃຊ້ໄດ້ຖ້າ ເຣໂຣ ບໍ່​ແມ່ນ
enabled

pie ການຕັ້ງຄ່ານີ້ (ປິດໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນ) ເພີ່ມ -fPIE to ປ້າຍກຳກັບ, CXXFLAGS, OBJCFLAGS,
OBJCXXFLAGS, GCJFLAGS, ທຸງ ແລະ FCFLAGS, ແລະ -fPIE -pie to LDFLAGS. ຕໍາແໜ່ງ
Independent Executable ແມ່ນຈໍາເປັນເພື່ອໃຊ້ປະໂຍດຈາກ Address Space Layout
Randomization, ສະຫນັບສະຫນູນໂດຍບາງສະບັບ kernel. ໃນຂະນະທີ່ ASLR ສາມາດຢູ່ແລ້ວ
ບັງຄັບໃຊ້ສໍາລັບພື້ນທີ່ຂໍ້ມູນໃນ stack ແລະ heap (brk ແລະ mmap), ພື້ນທີ່ລະຫັດຕ້ອງ
ໄດ້ຖືກລວບລວມເປັນຕໍາແຫນ່ງເອກະລາດ. ຫ້ອງສະໝຸດທີ່ແບ່ງປັນແລ້ວເຮັດອັນນີ້ (-fPIC), ດັ່ງນັ້ນ
ພວກເຂົາໄດ້ຮັບ ASLR ໂດຍອັດຕະໂນມັດ, ແຕ່ພາກພື້ນ .text binary ຈໍາເປັນຕ້ອງສ້າງ PIE ເພື່ອໃຫ້ໄດ້ຮັບ
ASLR. ເມື່ອສິ່ງດັ່ງກ່າວເກີດຂຶ້ນ, ການໂຈມຕີ ROP (Return Oriented Programming) ແມ່ນຍາກກວ່າ
ເນື່ອງຈາກວ່າບໍ່ມີສະຖານທີ່ຄົງທີ່ທີ່ຈະ bounce ອອກໃນລະຫວ່າງການເສຍຫາຍຂອງຫນ່ວຍຄວາມຈໍາ
ໂຈມຕີ.

ອັນນີ້ບໍ່ເຂົ້າກັນໄດ້ກັບ -fPIC ສະນັ້ນຕ້ອງລະມັດລະວັງໃນເວລາທີ່ການກໍ່ສ້າງຮ່ວມກັນ
ວັດຖຸ.

ນອກຈາກນັ້ນ, ນັບຕັ້ງແຕ່ PIE ຖືກປະຕິບັດໂດຍຜ່ານທະບຽນທົ່ວໄປ, ບາງສະຖາປັດຕະຍະກໍາ
(ໂດຍສະເພາະ i386) ສາມາດເບິ່ງການສູນເສຍປະສິດທິພາບສູງເຖິງ 15% ໃນສ່ວນຂໍ້ຄວາມຫຼາຍ-
ວຽກງານຄໍາຮ້ອງສະຫມັກຫນັກ; ປະລິມານວຽກສ່ວນໃຫຍ່ເຫັນໜ້ອຍກວ່າ 1%. ສະຖາປັດຕະຍະກໍາກັບ
ການລົງທະບຽນທົ່ວໄປຫຼາຍ (ເຊັ່ນ amd64) ບໍ່ໄດ້ເຫັນວ່າເປັນການລົງໂທດທີ່ສູງທີ່ສຸດ.

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

ບໍ່ມີເວລາ
ການຕັ້ງຄ່ານີ້ (ຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ) ເພີ່ມ -Wdate-time to CPPFLAGS. ນີ້ຈະເຮັດໃຫ້ເກີດ
ການ​ເຕືອນ​ໄພ​ໃນ​ເວ​ລາ​ທີ່​ __TIME__, __DATE__ ແລະ __TIMESTAMP__ ມະຫາພາກຖືກນໍາໃຊ້.

ENVIRONMENT


ມີ 2 ຊຸດຂອງຕົວແປສະພາບແວດລ້ອມທີ່ດໍາເນີນການດຽວກັນ, ຊຸດທໍາອິດ
(DEB_ທຸງ_op) ບໍ່ຄວນໃຊ້ພາຍໃນ debian/ກົດລະບຽບ. ມັນຫມາຍເຖິງຜູ້ໃຊ້ທີ່ຕ້ອງການ
ເພື່ອສ້າງຊຸດແຫຼ່ງໃຫມ່ດ້ວຍທຸງການກໍ່ສ້າງທີ່ແຕກຕ່າງກັນ. ຊຸດທີສອງ
(DEB_ທຸງ_MAINT_op) ຄວນ​ຈະ​ຖືກ​ນໍາ​ໃຊ້​ພຽງ​ແຕ່​ໃນ​ debian/ກົດລະບຽບ ໂດຍຜູ້ຮັກສາຊຸດເພື່ອປ່ຽນແປງ
ທຸງການກໍ່ສ້າງຜົນໄດ້ຮັບ.

DEB_ທຸງ_SET
DEB_ທຸງ_MAINT_SET
ຕົວແປນີ້ສາມາດຖືກໃຊ້ເພື່ອບັງຄັບໃຫ້ຜົນຕອບແທນຂອງຄ່າທີ່ໃຫ້ ທຸງ.

DEB_ທຸງ_STRIP
DEB_ທຸງ_MAINT_STRIP
ຕົວແປນີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອສະຫນອງຊ່ອງແຍກລາຍການທາງເລືອກທີ່ຈະເປັນ
ຖອດຈາກຊຸດຂອງທຸງສົ່ງຄືນສໍາລັບການໃຫ້ ທຸງ.

DEB_ທຸງ_APPEND
DEB_ທຸງ_MAINT_APPEND
ຕົວແປນີ້ສາມາດຖືກໃຊ້ເພື່ອຕື່ມຕົວເລືອກເສີມໃສ່ກັບຄ່າທີ່ສົ່ງກັບ
ມອບໃຫ້ ທຸງ.

DEB_ທຸງ_PREPEND
DEB_ທຸງ_MAINT_PREPEND
ຕົວແປນີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອ prepend ທາງເລືອກເພີ່ມເຕີມຕໍ່ກັບມູນຄ່າທີ່ສົ່ງຄືນ
ສໍາລັບການໃຫ້ ທຸງ.

DEB_BUILD_OPTIONS
DEB_BUILD_MAINT_OPTIONS
ຕົວແປເຫຼົ່ານີ້ສາມາດໃຊ້ໂດຍຜູ້ໃຊ້ຫຼືຜູ້ຮັກສາເພື່ອປິດການໃຊ້ງານ / ເປີດໃຊ້ພື້ນທີ່ຕ່າງໆ
ລັກສະນະທີ່ມີຜົນກະທົບຕໍ່ການສ້າງທຸງ. ໄດ້ DEB_BUILD_MAINT_OPTIONS ການລົບລ້າງຕົວແປ
ການຕັ້ງຄ່າໃດໆໃນ DEB_BUILD_OPTIONS ພື້ນທີ່ຄຸນນະສົມບັດ. ເບິ່ງ ຄຸນ​ນະ​ສົມ​ບັດ AREAS ສ່ວນ
ສໍາລັບລາຍລະອຽດ.

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


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

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

Linux ຄຳ ສັ່ງ

Ad