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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: ar статическая библиотека. Как правильно собрать-то?!  (Прочитано 784 раз)

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

Оффлайн DeeMOONger

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
  • Ubuntu 18.04 LTS 64bits
    • Просмотр профиля
    • DeeNAMICS
Доброго времени суток!
Я уже год, как перешел на Ubuntu и теперь уже не хочу с нее слазить. Нра!
Но вот в разработке по сей день есть сложности. Они связаны с Makefile. Ну никак я не разберусь во всех прелестях...

И так, проблема:

Пишу свой двиг. Статическая сборка. Все было путем, пока не понадобилось добавить libjpeg.

Собираю libjpeg. Затем собираю двиг:

Код: (с++) [Выделить]
CC=g++
CFLAGS=-Wall -pedantic -ansi
LDFLAGS=-lX11 -L/usr/X11R6/lib -Os
SOURCES=canvas.cpp texture.cpp ...
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=libengine

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
ar cr $(EXECUTABLE) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
$(CC) $(CFLAGS) $< -o $@

clean:
rm -rf *.o


Короче, как-то так.
Так вот libjpeg не подсасывается к архиву. Как его туда пихнуть? Как сделать так, чтобы все либы нужные были внутри статической библиотеки?
Гуглил. Или там все слишком умные, либо не считают нужным объяснять подобное.
Выручайте!
« Последнее редактирование: 01 Июня 2017, 10:20:31 от Azure »
If your are first, you are first. If you’re second, you are nothing.

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 754
    • Просмотр профиля
Первое - почему не устроил системный libjpeg, и ты собираешь его сам?
Второе - обычно никто не кладет библиотеку внутрь другой библиотеки. Тем более системные. Ведь ты же не будешь сам следить за её обновлениями безопасности и обновлять свою. Пусть это делает система.

Если уж очень хочется, то примерно так упаковывается в одну (не проверял)
ar crsT libbiglib.a libengine.a libjpeg.a

Ну или попробуй добавить её в $(EXECUTABLE) после $(OBJECTS)

P.S. ЕМНИП, -Os все же флаг компилятора, а не линковщика
« Последнее редактирование: 01 Июня 2017, 07:47:02 от aSmile »

 

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