Как мне C распознать библиотеки, которые не были установлены должным образом? - PullRequest
1 голос
/ 12 декабря 2011

Для проекта на C, который я пишу, мне нужно использовать библиотеку GMP, которую я разархивировал в своем домашнем каталоге (используя ОС OpenBSD с bash).Я работаю с другими над git, поэтому я не могу изменить заголовки на относительные файлы, и в данный момент GCC выдает ошибки о невозможности найти его.У меня нет корневых привилегий, поэтому я не могу просто установить его.

Как заставить GCC искать библиотеку GMP в моей домашней папке вместо обычного места?

Ответы [ 2 ]

4 голосов
/ 12 декабря 2011

При компиляции используйте аргумент -I, чтобы указать GCC, где искать файлы заголовков, и -L, чтобы сообщить GCC, где искать библиотеки.

Например:

$ gcc -I/location/of/library/headers -c foo.c -o foo.o
$ gcc -L/location/of/library/libs foo.o -o foo -llibrary
0 голосов
/ 12 декабря 2011

Решение состоит в том, чтобы использовать переменную среды, которую вы указали, чтобы указать место, где установлена ​​библиотека GMP.

Например, этот скрипт bash:

#!/bin/bash
export GMP_PATH=/home/mylibs/gmp

и в вашем make-файле (или скрипте) вы можете использовать что-то вроде:

gcc my_file1.c my_file2.c my_file3.c -I${GMP_PATH}/include

Я не знаю структуру каталогов библиотеки GMP, но вы сможете получить путь включения на основе переменной GMP_PATH, которая указывает на каталог GMP.

Так что возможно иметь что-то вроде ${GMP_PATH}/include, ${GMP_PATH}/src/include и т. Д.

...