Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: [Решено] Помогите статически прилинковать библиотеку (makefile)  (Прочитано 3622 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн amdlintuxos

  • Автор темы
  • Любитель
  • *
  • Сообщений: 86
    • Просмотр профиля
Пол дня я потратил на то чтобы найти способ загрузить png файл в opengl текстуру, вроде бы нашёл, но он требует от меня чтения man'ов составления makeFile.
я пытался, но дело в том что всё это обилие информации которое сваливается на голову за раз makes me crazy. всё что я хочу получить png текстуру в ogl, не отпрвляйте меня читать маны по опциям компиляции, у меня от указателей бошка уже болит :D.

вкратце о проблеме:
есть библиотека SOIL, в инструкции её ипользования написано что нужно статичски прилинковать библиотеку к своему проекту.
Цитировать
Usage:
SOIL is meant to be used as a static library (as it's tiny and in the public domain). You can use the static library file included in the zip (libSOIL.a works for MinGW and Microsoft compilers...feel free to rename it to SOIL.lib if that makes you happy), or compile the library yourself. The code is cross-platform and has been tested on Windows, Linux, and Mac. (The heaviest testing has been on the Windows platform, so feel free to email me if you find any issues with other platforms.)
есть "проект" (частичный копипаст туториалов + свой недокод) c++ + SDL.
непомню как, но главное что работает, получилось сделать вот такой makefile:
all:
g++ -lGL -lGLU `sdl-config --cflags --libs` -o main main.cpp
с ним всё работает, в окошке я вижу 3Д сферу(sdl + opengl работают). Дальше я хочу подключить
libSOIL.a чтоб его юзать(мне от него нужны функции загрузки картинок в ogl).

Ну и тут началось: всей моей фантазии хватило на добавление в конец makefile второй строки
all:
g++ -lGL -lGLU `sdl-config --cflags --libs` -o main main.cpp
g++ -o main main.cpp libSOIL.a
        
и копирования в дирректорию проекта файлика libSOIL.а.
Ппри попытке всё это дело собрать у меня перестаёт находится
main.cpp:17: fatal error: SDL.h: No such file or directory

Я понимаю что второй строчкой в makefile, я поломал что-то, подскажите как правильно надо написать чтоб прилинковать?

Зараннее спасибо.
« Последнее редактирование: 24 Апреля 2011, 23:37:02 от amdlintuxos »
что не збудется - позабудется

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Я на сях не программирую, опыта с gcc у меня не много, но что отложилось, так это то, что библиотеки подключаться должны с помощью опции -l и имени библиотеки без перфикса "lib" и суффикса ".a". Т.е. тебе надо в первую строчку добавить опцию -lSOIL и если библиотека не не лежит в по стандартному расположению в системе, то ещё можно указать опцию -L/путь/к/библиотеке. Например, если библиотека лежит в каталоге с исходником, то makefile должен быть таким:
all:
g++ -lGL -lGLU -lSOIL -L. `sdl-config --cflags --libs` -o main main.cpp

Оффлайн amdlintuxos

  • Автор темы
  • Любитель
  • *
  • Сообщений: 86
    • Просмотр профиля
Mam(O)n
спасибо большое, всё как вы и говорили, теперь работает, буду знать 8)
что не збудется - позабудется

 

Страница сгенерирована за 0.037 секунд. Запросов: 25.