Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как подключать библиотеки? 
:(
    Опции темы
Гость_Anton.
Дата 2.1.2004, 16:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как, мне, например, подключить в линухе библиотеку SVGAlib?
Если сделать инклуд, то файл компилится, только без команды -lvga, при попытке вызвать библиотечную функцию - не компилится. С командой -lvga не компилится вообще.
Библиотека представляет собой архив, состоящий из множества файлов.

Если комапть дальше, то мне попросту нужно писать простенькие программки с графикой под линукс в универ. Вот так.

Буду признателен, если кто-нибудь подскажет. =)
  Вверх
vickr
Дата 2.1.2004, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.5.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



При указании -lvga (это, кстати, ключ компоновщика, а не компилятора), ты говоришь линкеру искать внешние символы (в частности, те имена функций, которые содержатся в заголовочном файле подключаемой библиотеки), в первую очередь, в файле libvga.so (динамической библиотеке), затем, если оная не найдена, в архиве libvga.a. Т.е. процесс построения исполняемого модуля состоит из 2 этапов - компиляции, когда достаточно только объявлений, содержащихся в хедерах, и компоновки, когда объектные файлы (результаты компиляции) объединяются в один исполняемый файл.
Более предметно:
gcc -c myfile.c
gcc -o myfile myfile.o -lvga
Здесь возможны еще ключи с указанием путей для поиска заголовочных файлов (при компиляции) и библиотек (при компоновке, если они не находятся в стандартных каталогах типа usr/lib).
Как правило, эти 2 этапа допучкается указывать в одной строке (сразу флаги -с и -о).
Это кусок теории, лично я не работал с графикой под линухом - просто изложил общие концепции, на которых можно споткнуться с непривычки. Конкретная ошибка может заключаться в чем угодно - необходимо уточнение. Ты говоришь, что
Цитата
Библиотека представляет собой архив, состоящий из множества файлов
- не совсем понятно... дело в том, что архив - это один файл (как правило, с расширением .a), состоящий из нескольких объектных файлов (близкий аналог .lib-файла в виндах), другими словами, статическая библиотека. Если libvga.a - это и есть тот архив, то сразу ничего дельного на ум не приходит - разве что ошибка в имени файла (libsvga?). Повторюсь, с графикой не работал - поэтому делаю самые общие предположения smile.gif. Если там действительно несколько библиотечных файлов, то, возможно, ты просто подключаешь не тот или не те. Одним словом, пробегись внимательно по проекту, может быть, ошибка на самом деле где-то на поверхности.
Удачи.
--------------------
Каждую секунду, тыкая в клавиши, мы давим насмерть не менее 1000 микробов =:)
PM MAIL   Вверх
Гость_Anton
Дата 3.1.2004, 02:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











vickr
Ох, спасибо огромное, за такой развернутый ответ.
когда говорил про несколько файлов имел ввиду дистрибутив, в который запакованы файлы библиотеки. Вот.
Вобщем, очевидно, что я должен указать, где искать эти файлы при компановке. Попробую. =)
  Вверх
Гость_Anton
Дата 3.1.2004, 02:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Да, вот как мне это сделать?
при прописке -lvga ошибка такая: cannot find -lvga.
Как направить компановщик по нужному пути?
  Вверх
vickr
Дата 3.1.2004, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.5.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Для начала попробуй найти файлы libvha.* или лучше *vga*. Запусти поиск с корневого, включая поддиректории, если у тебя не слишком разбухшая система или поищи по очереди в локальных директориях, находящихся в корне (/root (если ты root:) ), /usr, /lib и т.д.).
--------------------
Каждую секунду, тыкая в клавиши, мы давим насмерть не менее 1000 микробов =:)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0621 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.