Як включити шлях до бібліотек у g ++


96

Я намагаюся включити шлях до додаткових бібліотек у своєму файлі make, але я не можу зрозуміти, як змусити компілятор використовувати цей шлях. поки що я маю:

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

і я хочу включити шлях до

/data[...]/lib

тому що testing.cpp включає файли з цієї бібліотеки. Крім того, я працюю на машині Linux.

EDIT: Не шлях до бібліотеки. Просто до файлів, які були включені. Моє ліжко.


Відповіді:


168

Щоб вказати каталог для пошуку (двійкових) бібліотек, ви просто використовуєте -L:

-L/data[...]/lib

Щоб вказати фактичне ім'я бібліотеки, ви використовуєте -l:

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

Щоб вказати каталог для пошуку включених файлів (відмінних від бібліотек!), Ви використовуєте -I:

-I/data[...]/lib

Тому я думаю, що ти хочеш щось подібне

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

4
В основному десь, перш ніж це потрібно; наприклад, -Iмає стояти перед іменами файлів .cpp.
Ернест Фрідман-Хілл

1
Чи можна змусити компілятор зрозуміти це, як додати бібліотеку до системної змінної?
Фред

5
@Fred, так, g ++ розуміє цілу купу змінних середовища, які можна використовувати для керування шляхом включення, шляхом бібліотеки тощо
Ернест Фрідман-Хілл,

1
яка різниця між -L та -I (великим i, не нижчим L)?
Youda008,

1
@ Youda008 Capital ell: шлях пошуку бібліотек. Велике око: шлях пошуку для файлів включення. Small ell: назва бібліотеки для посилання.
Ернест Фрідман-Хілл

1

У файлі MakeFile або CMakeLists.txt ви можете встановити CMAKE_CXX_FLAGS, як показано нижче:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/path/to/your/folder")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.