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!

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.