Làm cách nào để đưa đường dẫn đến thư viện trong g ++


96

Tôi đang cố gắng bao gồm đường dẫn đến các thư viện bổ sung trong makefile của mình, nhưng tôi không thể tìm ra cách để trình biên dịch sử dụng đường dẫn đó. cho đến nay tôi có:

g++ -g -Wall testing.cpp fileparameters.cpp main.cpp -o test

và tôi muốn bao gồm đường dẫn đến

/data[...]/lib

vì testing.cpp bao gồm các tệp từ thư viện đó. Ngoài ra, tôi đang sử dụng một máy linux.

CHỈNH SỬA: Không phải là đường dẫn đến thư viện. Chỉ với các tệp đã được bao gồm. Lỗi của tôi.


Câu trả lời:


168

Để chỉ định một thư mục để tìm kiếm các thư viện (nhị phân), bạn chỉ cần sử dụng -L:

-L/data[...]/lib

Để chỉ định tên thư viện thực, bạn sử dụng -l:

-lfoo  # (links libfoo.a or libfoo.so)

Để chỉ định một thư mục để tìm kiếm các tệp bao gồm (khác với các thư viện!), Bạn sử dụng -I:

-I/data[...]/lib

Vì vậy, tôi nghĩ những gì bạn muốn là một cái gì đó như

g++ -g -Wall -I/data[...]/lib testing.cpp fileparameters.cpp main.cpp -o test

4
Về cơ bản ở một nơi nào đó trước khi cần thiết; các -Inên đến trước khi tên tập tin cpp, ví dụ.
Ernest Friedman-Hill

1
Có thể làm cho trình biên dịch giống như vậy, chẳng hạn như thêm thư viện vào một biến hệ thống?
Fred

5
@Fred, vâng, g ++ hiểu một bó toàn bộ các biến môi trường mà có thể được sử dụng để kiểm soát bao gồm đường dẫn, đường dẫn thư viện, vv
Ernest Friedman-Hill

1
sự khác biệt giữa -L và -I (i viết hoa, không phải L thấp hơn)?
Youda008

1
@ Youda008 Capital ell: đường dẫn tìm kiếm thư viện. Capital eye: đường dẫn tìm kiếm các tệp bao gồm. Ell nhỏ: tên thư viện cần liên kết.
Ernest Friedman-Hill,

1

Trong MakeFile hoặc CMakeLists.txt, bạn có thể đặt CMAKE_CXX_FLAGS như sau:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/path/to/your/folder")
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.