Làm cách nào để thêm đường dẫn thư viện vào lệnh ./cool?


51

Tôi muốn ./configureliên kết đến một thư viện và một số bao gồm các tập tin. Thư viện của tôi được lưu trữ /home/foo/sw/lib/và các tập tin của tôi được lưu trữ trong /home/foo/sw/include.

./configure --help ném ra như sau:

Một số biến môi trường có ảnh hưởng:

  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

Tôi đã thử các kết hợp khác nhau:

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

Nhưng tôi dường như không thể hiểu đúng cú pháp. Nếu bất cứ ai có thể giúp tôi ra, điều đó sẽ được đánh giá rất cao. CẢM ƠN!

Câu trả lời:


58

Bạn đã bỏ lỡ ý nghĩa của

Một số biến môi trường có ảnh hưởng :

Vì vậy, bạn đặt chúng như một biến môi trường; cấu hình xác định LDFLAGS và CPPFLAGS bằng cách kiểm tra tệp cấu hình và môi trường. Bạn có thể đặt chúng như thế này ...

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

hoặc như một lớp lót:

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

Xin lưu ý rằng có thể bạn không thể sử dụng các thư mục con trong /home/foo/sw/lib/

Việc đặt thư viện của bạn vào /home/foo/sw/lib/bar/có thể cho bạn thấy một lib not foundlỗi.

Tuy nhiên, bạn có thể sử dụng nhiều mục:

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


4
Có thể CPPFLAGS = '- Tôi / nhà / foo / sw / bao gồm: $ CPPFLAGS' chỉ trong trường hợp có gì đó ở ngoài đó;)
Braiam

1
Xin chào, Rinzwind. Tôi bối rối về sự khác biệt giữa LDFLAGS=-LLIBS=-l. Theo sự giúp đỡ, họ dường như là điều tương tự. Có sự khác biệt nào không?
dùng15964

@ user15964 -Lđề cập đến một thư mục để tìm kiếm các thư viện trong khi -lthông báo cho trình liên kết để liên kết với một thư viện cụ thể (để tìm thư mục đó sẽ tìm kiếm các -Lthư mục được cung cấp cùng với bộ mặc định.
sherrellbc

Tại sao có /sau LDFLAGSnhưng không sau CPPFLAGS? Đó là một lỗi đánh máy, hay nó quan trọng?
vy32

không kiên trì, cả làm việc và không. / Ở cuối biểu thị nó là một thư mục nhưng nó không cần thiết quá bao gồm.
Rinzwind
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.