ไวยากรณ์ที่ถูกต้องในการเพิ่ม CFLAGS และ LDFLAGS เพื่อ“ กำหนดค่า” คืออะไร?


40

ฉันต้องการติดตั้ง OpenVPN บน OpenBSD 5.5 โดยใช้ tarVPN ของแหล่ง OpenVPN

ตามคำแนะนำที่นี่ฉันต้องติดตั้ง lzo และ

เพิ่ม CFLAGS = "- I / usr / local / include" LDFLAGS = "- คำสั่ง L / usr / local / lib" เพื่อ "กำหนดค่า" เนื่องจาก gcc จะหาไม่พบ

ฉันมี googled อย่างกว้างขวางเพื่อเป็นแนวทางในการทำสิ่งต่าง ๆ บน OpenBSD แต่ไม่มี

นี่คือสิ่งที่ฉันวางแผนจะทำ:

  1. untar แหล่ง tarball ไปยังไดเรกทอรีที่สร้างขึ้นใหม่
  2. ใช้คำสั่ง. /configure CFLAGS = "- I / usr / local / รวม" LDFLAGS = "- L / usr / local / lib"
  3. ออกคำสั่งให้
  4. ออกคำสั่งทำการติดตั้ง

ไวยากรณ์ใดต่อไปนี้ถูกต้อง

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

หรือ

./configure --CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

หรือ

./configure --CFLAGS="-I/usr/local/include" --LDFLAGS="-L/usr/local/lib"

คำตอบ:


41

วิธีที่ถูกต้องคือ:

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

แต่สิ่งนี้อาจไม่ทำงานกับconfigureสคริปต์ทั้งหมด อาจเป็นการดีกว่าถ้าตั้งค่าตัวแปรสภาพแวดล้อมเช่นCPATHและLIBRARY_PATH(ดูgccหน้าคน)

ตัวอย่าง:

export CPATH=/usr/local/include
export LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH=/usr/local/lib

ในของคุณ.profileตัวอย่างเช่น LD_LIBRARY_PATHสามารถที่จำเป็นในกรณีของห้องสมุดสาธารณะถ้าเส้นทางวิ่งไม่ได้ใช้ (นี้ขึ้นอยู่กับระบบปฏิบัติการที่สร้างเครื่องมือและตัวเลือกที่ใช้ แต่ก็ไม่ควรทำร้าย)


ขอบคุณสำหรับคำตอบ. gcc ถูกติดตั้งตามค่าเริ่มต้นในระบบพื้นฐานของ OpenBSD 5.5 หรือไม่? หากไม่ใช่ฉันจะไม่ติดตั้งแพ็คเกจของบุคคลที่สามเนื่องจากอาจมีข้อบกพร่องหรือช่องโหว่ด้านความปลอดภัย
user66229

1
@ user66229 ถ้าคุณไม่เริ่มต้นติดตั้งแล้วใช่gcc-4.2.1(ยกเว้นกรณีที่คุณอยู่ในเครื่องเก่าจริงๆเช่น vaxen) comp55.tgzอยู่ใน มีแพ็กเกจสำหรับการมีgcc-4.8และและยัง4.9 llvm/clang 3.0อดีตไม่ได้ถูกรวมไว้ด้วยเหตุผลด้านลิขสิทธิ์เป็นหลัก (GPLv2 vs GPLv3) ส่วนหลังไม่ได้ใช้เพราะไม่รองรับแพลตฟอร์มทั้งหมดที่ OpenBSD รองรับในปัจจุบัน
เมียน

1
@ user66229 ฉันได้แก้ไขคำตอบของฉัน นี่เป็นเพียงตัวอย่างอาจมีวิธีอื่นในการทำเช่นนั้นและคุณอาจมีการตั้งค่าบางอย่างอยู่แล้ว ตรวจสอบก่อนด้วยecho $CPATHและอื่น ๆ
vinc17

1
ขอบคุณสำหรับ "แต่สิ่งนี้อาจใช้ไม่ได้กับความคิดเห็นทั้งหมดที่ตั้งค่าสคริปต์" - ฉันเพิ่งพบกรณีที่หลังจากการอ้างอิงหลายครั้งที่คอมไพล์ด้วย CFLAGS การพึ่งพาครั้งสุดท้ายล้มเหลวเมื่อ CFLAGS ถูกระบุ (และแน่นอนgrep CFLAGS configureคืนค่าว่างจากสคริปต์การกำหนดค่า) .
sdaau

1
ฉันจะต้องระวังให้มากกับLD_LIBRARY_PATH: xahlee.info/UnixResource_dir/_/ldpath.html
skalee

8

ไวยากรณ์แรกถูกต้อง

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

แต่ก็เป็นที่ขอแนะนำให้ใช้ไบนารีอย่างใดอย่างหนึ่งpackages(7)หรือถ้าด้วยเหตุผลใดก็ตามที่คุณจำเป็นอย่างยิ่งที่จะสร้างจากแหล่งที่มาทำให้การใช้งานของports(7)โครงสร้างพื้นฐานตามที่อธิบายไว้โดยส่วนคำถาม 15

ตั้งค่าทรีพอร์ตตามรายละเอียดในคำถามที่พบบ่อย จากนั้นมองหาopenvpnพอร์ต:

cd /usr/ports
make search key=openvpn

openvpnนี้จะส่งออกจำนวนของพอร์ตที่มีคำว่า หนึ่งในนั้นคือมีเส้นทางopenvpn-2.3.2net/openvpn

cd net/openvpn
sudo make install clean

นี่จะมีประโยชน์ที่การอ้างอิง (ที่นี่เท่านั้นlzo2) จะได้รับการติดตั้งอย่างเหมาะสมโดยไม่ต้องปิดระบบของคุณและคุณจะได้รับคำแนะนำเพิ่มเติมเกี่ยวกับวิธีการใช้งานopenvpnบน OpenBSD


ขอบคุณสำหรับคำตอบ. OpenBSD 5.5 มีแพ็คเกจ OpenVPN (ไบนารี่) อยู่แล้ว แต่เก่าในเวอร์ชั่น 2.3.2 ฉันต้องการรวบรวมและติดตั้งเวอร์ชันล่าสุด 2.3.4 ซึ่งมีให้เฉพาะจาก GitHub ของ OpenVPN เท่านั้น
user66229

ดังที่คุณพูดถึง lzo ฉันสังเกตเห็นว่ามีแพ็คเกจไบนารีอยู่สามแบบ: lzo-1.08p3.tgz, lzo2-2.06p0.tgz และ lzop-1.03.tgz ข้อใดต่อไปนี้ในสามของ OpenVPN
user66229

1
@ user66229: lzo2-2.06p0.tgzที่จะเป็น นี่คือแพทช์ที่อัพเกรดพอร์ตopenvpnจาก2.3.2เป็น2.3.4แต่แทบจะไม่มีการเปลี่ยนแปลงที่เกี่ยวข้องกับ OpenBSD ระหว่างสองเวอร์ชัน (อ่านเธรดทั้งหมด) ฉันจะจริงๆขอแนะนำว่าคุณก็ไปกับแพคเกจไบนารี
เมียน

@ ดาเมียนขอบคุณสำหรับคำตอบของคุณและลิงค์ไปยังแพทช์ ผมอ่านเนื้อหาของแพทช์และสิ่งที่ผมกังวลคือความจริงที่มีไม่มีผู้ดูแลที่ OpenBSD สำหรับ OpenVPN โปรดช่วยฉันเดาคำตอบว่าแพคเกจไบนารีopenvpn-2.3.2.tgzมาสู่การดาวน์โหลดอย่างเป็นทางการของ OpenBSD อย่างไร
user66229

1
@ user66229 ที่นี่คุณสามารถดูรายการการแก้ไขทั้งหมดสำหรับ Makefile ของพอร์ต ดังที่ Stuart Henderson (หนึ่งในผู้ดูแลแพ็คเกจหลัก) กล่าวในหัวข้อนั้นการเปลี่ยนแปลงเหล่านั้นไม่มากนักที่เกี่ยวข้องกับ OpenBSD
เมียน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.