Bagaimana cara menambahkan libraries path ke perintah ./configure?

51

Saya ingin ./configuremenautkan ke perpustakaan dan beberapa menyertakan file. Pustaka saya disimpan /home/foo/sw/lib/dan file saya disimpan /home/foo/sw/include.

./configure --help membuang yang berikut:

Beberapa variabel lingkungan yang berpengaruh:

  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

Saya telah mencoba berbagai kombinasi:

./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..

Tapi sepertinya saya tidak bisa mendapatkan sintaks yang benar. Jika ada yang bisa membantu saya, itu akan sangat dihargai. TERIMA KASIH!

Penambah hitam
sumber

Jawaban:

58

Anda melewatkan arti

Beberapa variabel lingkungan yang berpengaruh :

Jadi Anda mengaturnya sebagai variabel lingkungan; configure menentukan LDFLAGS dan CPPFLAGS dengan memeriksa file-file konfigurasi dan lingkungan. Anda dapat mengaturnya seperti ini ...

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

atau sebagai one-liner:

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

Harap perhatikan bahwa Anda tidak dapat menggunakan subdirektori di bawah /home/foo/sw/lib/

Jika meletakkan perpustakaan Anda /home/foo/sw/lib/bar/mungkin menunjukkan lib not foundkesalahan.

Namun Anda dapat menggunakan banyak entri:

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

Rinzwind
sumber
4
Mungkin CPPFLAGS = '- I / home / foo / sw / termasuk: $ CPPFLAGS' kalau-kalau ada sesuatu di luar sana;)
Braiam
1
Hai, Rinzwind. Saya bingung tentang perbedaan antara LDFLAGS=-Ldan LIBS=-l. Menurut bantuan, mereka tampaknya menjadi hal yang sama. Apakah ada perbedaan?
user15964
@ user15964 -Lmerujuk ke direktori untuk mencari pustaka sementara -lmenginformasikan tautan untuk menghubungkan ke pustaka tertentu (untuk menemukan yang akan mencari -Ldirektori yang disediakan di samping set default.
sherrellbc
Mengapa ada /setelah LDFLAGStapi tidak setelah CPPFLAGS? Apakah itu salah ketik, atau penting?
vy32
tidak perse, keduanya bekerja dan tidak. The / pada akhirnya menandakan itu adalah direktori tetapi tidak diperlukan juga termasuk.
Rinzwind