วิธีเพิ่มเส้นทางไลบรารีไปยังคำสั่ง. / config


51

ฉันต้องการ./configureลิงก์ไปยังห้องสมุดและบางไฟล์มี ห้องสมุดของฉันถูกเก็บไว้ในและไฟล์ของฉันจะถูกเก็บไว้ใน/home/foo/sw/lib//home/foo/sw/include

./configure --help พ่นออกดังต่อไปนี้:

ตัวแปรสภาพแวดล้อมที่มีอิทธิพลบางอย่าง:

  CC           C compiler command
  CFLAGS       C compiler flags
  LDFLAGS      linker flags, e.g. -L<lib dir> if you have libraries in a 
               nonstandard directory <lib dir>
  LIBS         libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS     (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if 
               you have headers in a nonstandard directory <include dir>
  CPP          C preprocessor

ฉันได้ลองชุดค่าผสมต่าง ๆ :

./configure --prefix=/home/foo/sw -I</home/foo/sw/include> -L</home/foo/sw/lib/>
./configure --prefix=/home/foo/sw -I=/home/foo/sw/include -L=/home/foo/sw/lib/
./configure --prefix=/home/foo/sw -I/home/foo/sw/include -L/home/foo/sw/lib/
etc..

แต่ฉันดูเหมือนจะไม่ได้รับไวยากรณ์ที่ถูกต้อง หากใครสามารถช่วยฉันออกไปมันก็จะได้รับการชื่นชมอย่างมาก ขอขอบคุณ!

คำตอบ:


58

คุณพลาดความหมายของ

ตัวแปรสภาพแวดล้อมที่มีอิทธิพลบางอย่าง:

ดังนั้นคุณตั้งเป็นตัวแปรสภาพแวดล้อม; configure เป็นตัวกำหนด LDFLAGS และ CPPFLAGS โดยการตรวจสอบไฟล์กำหนดค่าและสภาพแวดล้อม คุณสามารถตั้งค่าพวกเขาเช่นนี้ ...

export CPPFLAGS='-I/home/foo/sw/include/'
export LDFLAGS='-L/home/foo/sw/lib/'
./configure

หรือเป็นหนึ่งซับ:

env CPPFLAGS='-I/home/foo/sw/include/' LDFLAGS='-L/home/foo/sw/lib/' ./configure

โปรดทราบว่าเป็นไปได้ว่าคุณไม่สามารถใช้ไดเรกทอรีย่อยภายใต้ /home/foo/sw/lib/

fe ใส่ห้องสมุดของคุณใน/home/foo/sw/lib/bar/อาจแสดงlib not foundข้อผิดพลาด

อย่างไรก็ตามคุณสามารถใช้หลายรายการ:

LDFLAGS="-L/home/foo/sw/lib/ -L/home/foo/bar/lib/"


4
อาจ CPPFLAGS = '- I / home / foo / sw / include: $ CPPFLAGS' ในกรณีที่มีบางอย่างผิดปกติ;)
Braiam

1
สวัสดี Rinzwind ฉันสับสนเกี่ยวกับความแตกต่างระหว่างและLDFLAGS=-L LIBS=-lตามความช่วยเหลือพวกเขาดูเหมือนจะเป็นสิ่งเดียวกัน มีความแตกต่างหรือไม่?
user15964

@ user15964 -Lหมายถึงไดเรกทอรีเพื่อค้นหาไลบรารีในขณะที่-lแจ้งให้ linker เชื่อมโยงกับไลบรารีเฉพาะ (เพื่อค้นหาสิ่งที่มันจะค้นหา-Lไดเรกทอรีที่ให้มาพร้อมกับชุดเริ่มต้น
sherrellbc

ทำไมถึงมี/หลังLDFLAGSแต่ไม่หลังจากที่CPPFLAGS? นั่นเป็นตัวพิมพ์ผิดหรือสำคัญหรือไม่?
vy32

ไม่ perse ทั้งทำงานและไม่ / ในตอนท้ายหมายถึงมันเป็นไดเรกทอรี แต่ไม่จำเป็นต้องมีมากเกินไป
Rinzwind
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.