Связывание jpeglib с make-файлом - PullRequest
1 голос
/ 30 мая 2020

Привет, я пытаюсь использовать jpeglib в своем коде, и у меня проблемы с связыванием его с моим Makefile. Я загрузил его в файл tar.gz, затем извлек его и сделал все ./configure, затем сделал и все это материал, но теперь я должен связать его в Makefile, и я не знаю, как здесь Makefile

CFLAGS+= -Wall -Werror -fPIE -std=gnu99 -g
LDFLAGS=  -pthread 

HW=prgsem
BINARIES=prgsem

#LDFLAGS += -L/usr/local/lib -ljpeglib
#CXXFLAGS += -I/usr/local/include
CFLAGS+=$(shell sdl2-config --cflags)
LDFLAGS+=$(shell sdl2-config --libs) -lSDL2_image



all: ${BINARIES}

OBJS=${patsubst %.c,%.o,${wildcard *.c}}

prgsem: ${OBJS}
    ${CC} ${OBJS} ${CXXFLAGS}  ${LDFLAGS} -o $@

${OBJS}: %.o: %.c
    ${CC} -c ${CFLAGS}  $< -o $@

clean:
    rm -f ${BINARIES} ${OBJS}

Прокомментированный материал - это то, что я пробовал и не работал. Также пробовал менять сам #include. Пробовал #include "jpeglib.h" также #include <jpeglib.h> ничего не работало.

EDIT: добавлено сообщение об ошибке make compile

cc xwin_sdl.o event_queue.o prg_io_nonblock.o gui.o main.o prgsem.o messages.o keyboard.o computation.o utils.o   -pthread  -L/usr/local/lib -Wl,-rpath,/usr/local/lib -Wl,--enable-new-dtags -lSDL2 -lSDL2_image -o prgsem
/usr/bin/ld: gui.o: in function `save_img':
/home/peter/Cprog/bab36prga-sem/gui.c:67: undefined reference to `jpeg_std_error'
/usr/bin/ld: /home/peter/Cprog/bab36prga-sem/gui.c:69: undefined reference to `jpeg_CreateCompress'
/usr/bin/ld: /home/peter/Cprog/bab36prga-sem/gui.c:74: undefined reference to `jpeg_stdio_dest'
/usr/bin/ld: /home/peter/Cprog/bab36prga-sem/gui.c:81: undefined reference to `jpeg_set_defaults'
/usr/bin/ld: /home/peter/Cprog/bab36prga-sem/gui.c:83: undefined reference to `jpeg_start_compress'
/usr/bin/ld: /home/peter/Cprog/bab36prga-sem/gui.c:90: undefined reference to `jpeg_write_scanlines'
/usr/bin/ld: /home/peter/Cprog/bab36prga-sem/gui.c:93: undefined reference to `jpeg_finish_compress'
/usr/bin/ld: /home/peter/Cprog/bab36prga-sem/gui.c:97: undefined reference to `jpeg_destroy_compress'
collect2: error: ld returned 1 exit status
make: *** [Makefile:19: prgsem] Error 1

Спасибо за любые ответы.

1 Ответ

0 голосов
/ 30 мая 2020

Ваша проблема не во время фазы компиляции вашей программы, поэтому измените #include et c. не поможет в этом случае.

Ваша проблема возникла на этапе связывания , поэтому это означает, что вы не добавили библиотеку в свою строку ссылок. Если, например, библиотека называется libjpeg.a или libjpeg.so, тогда вам нужно добавить -ljpeg в строку ссылки. Самый простой способ - добавить его в конец LDFLAGS:

LDFLAGS+=$(shell sdl2-config --libs) -lSDL2_image -ljpeg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...