Как собрать программу на C++ с библиотекой libjpeg

Я хотел бы собрать программу на C++ с библиотекой libjpeg, но когда я пытаюсь ее собрать, я получаю ошибки ниже.

g++ main.cpp -o main.o
main.cpp:26:22: warning: conversion from string literal to 'char *' is deprecated [-    Wdeprecated-writable-strings]
char *filename = "output.jpg";
                 ^
1 warning generated.
Undefined symbols for architecture x86_64:
  "_jpeg_CreateCompress", referenced from:
      _main in main-sUpMU6.o
  "_jpeg_destroy_compress", referenced from:
      _main in main-sUpMU6.o
  "_jpeg_finish_compress", referenced from:
      _main in main-sUpMU6.o
  "_jpeg_set_defaults", referenced from:
      _main in main-sUpMU6.o
  "_jpeg_set_quality", referenced from:
      _main in main-sUpMU6.o
  "_jpeg_start_compress", referenced from:
      _main in main-sUpMU6.o
  "_jpeg_std_error", referenced from:
      _main in main-sUpMU6.o
  "_jpeg_stdio_dest", referenced from:
      _main in main-sUpMU6.o
  "_jpeg_write_scanlines", referenced from:
      _main in main-sUpMU6.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [main.o] Error 1

Структура моего проекта такая.

./myCodes
  main.h main.cpp Makefile
./jpeg-9
  libjpeg src and build outputs

Сделать файл так.

ulibjpeg: main.o
    g++ -v -L../jpeg-9/cjpeg -L../jpeg-9/djpeg -L../jpeg-9 -l../jpeg-9 -ljpeg main.o -o     ulibjpeg

main.o: main.cpp
    g++ main.cpp -o main.o

Я думаю, что мне нужно добавить библиотеки libjpeg, но какие файлы мне нужно добавить, и как я могу добавить эти библиотеки в опциях g++?

Вот файлы каталогов./jpeg-9.

Makefile    jccoefct.c  jcprepct.lo jdmarker.o  jmemmgr.lo  makefile.bcc    rdjpgcom.1
Makefile.am jccoefct.lo jcprepct.o  jdmaster.c  jmemmgr.o   makefile.dj rdjpgcom.c
Makefile.in jccoefct.o  jcsample.c  jdmaster.lo jmemname.c  makefile.manx   rdjpgcom.o
README      jccolor.c   jcsample.lo jdmaster.o  jmemnobs.c  makefile.mc6    rdppm.c
aclocal.m4  jccolor.lo  jcsample.o  jdmerge.c   jmemnobs.lo makefile.mms    rdppm.o
ar-lib      jccolor.o   jctrans.c   jdmerge.lo  jmemnobs.o  makefile.sas    rdrle.c
cderror.h   jcdctmgr.c  jctrans.lo  jdmerge.o   jmemsys.h   makefile.unix   rdrle.o
cdjpeg.c    jcdctmgr.lo jctrans.o   jdpostct.c  jmorecfg.h  makefile.vc rdswitch.c
cdjpeg.h    jcdctmgr.o  jdapimin.c  jdpostct.lo jpegint.h   makefile.vms    rdswitch.o
cdjpeg.o    jchuff.c    jdapimin.lo jdpostct.o  jpeglib.h   makefile.wat    rdtarga.c
change.log  jchuff.lo   jdapimin.o  jdsample.c  jpegtran    makejdep.vc6    rdtarga.o
cjpeg       jchuff.o    jdapistd.c  jdsample.lo jpegtran.1  makejdsp.vc6    stamp-h1
cjpeg.1     jcinit.c    jdapistd.lo jdsample.o  jpegtran.c  makejdsw.vc6    structure.txt
cjpeg.c     jcinit.lo   jdapistd.o  jdtrans.c   jpegtran.o  makejfil.v10    testimg.bmp
cjpeg.o     jcinit.o    jdarith.c   jdtrans.lo  jquant1.c   makejmak.vc6    testimg.jpg
ckconfig.c  jcmainct.c  jdarith.lo  jdtrans.o   jquant1.lo  makejsln.v10    testimg.ppm
coderules.txt   jcmainct.lo jdarith.o   jerror.c    jquant1.o   makejvcx.v10    testimgp.jpg
config.guess    jcmainct.o  jdatadst.c  jerror.h    jquant2.c   makeproj.mac    testorig.jpg
config.log  jcmarker.c  jdatadst.lo jerror.lo   jquant2.lo  makerdep.vc6    testprog.jpg
config.status   jcmarker.lo jdatadst.o  jerror.o    jquant2.o   makerdsp.vc6    transupp.c
config.sub  jcmarker.o  jdatasrc.c  jfdctflt.c  jutils.c    makerfil.v10    transupp.h
configure   jcmaster.c  jdatasrc.lo jfdctflt.lo jutils.lo   makermak.vc6    transupp.o
configure.ac    jcmaster.lo jdatasrc.o  jfdctflt.o  jutils.o    makervcx.v10    usage.txt
depcomp     jcmaster.o  jdcoefct.c  jfdctfst.c  jversion.h  maketdep.vc6    wizard.txt
djpeg       jcomapi.c   jdcoefct.lo jfdctfst.lo libjpeg.la  maketdsp.vc6    wrbmp.c
djpeg.1     jcomapi.lo  jdcoefct.o  jfdctfst.o  libjpeg.map maketfil.v10    wrbmp.o
djpeg.c     jcomapi.o   jdcolor.c   jfdctint.c  libjpeg.txt maketmak.vc6    wrgif.c
djpeg.o     jconfig.bcc jdcolor.lo  jfdctint.lo libtool     maketvcx.v10    wrgif.o
example.c   jconfig.cfg jdcolor.o   jfdctint.o  ltmain.sh   makewdep.vc6    wrjpgcom
filelist.txt    jconfig.dj  jdct.h      jidctflt.c  makcjpeg.st makewdsp.vc6    wrjpgcom.1
install-sh  jconfig.h   jddctmgr.c  jidctflt.lo makdjpeg.st makewfil.v10    wrjpgcom.c
install.txt jconfig.mac jddctmgr.lo jidctflt.o  makeadsw.vc6    makewmak.vc6    wrjpgcom.o
jaricom.c   jconfig.manx    jddctmgr.o  jidctfst.c  makeasln.v10    makewvcx.v10    wrppm.c
jaricom.lo  jconfig.mc6 jdhuff.c    jidctfst.lo makecdep.vc6    makljpeg.st wrppm.o
jaricom.o   jconfig.sas jdhuff.lo   jidctfst.o  makecdsp.vc6    maktjpeg.st wrrle.c
jcapimin.c  jconfig.st  jdhuff.o    jidctint.c  makecfil.v10    makvms.opt  wrrle.o
jcapimin.lo jconfig.txt jdinput.c   jidctint.lo makecmak.vc6    missing     wrtarga.c
jcapimin.o  jconfig.vc  jdinput.lo  jidctint.o  makecvcx.v10    rdbmp.c             wrtarga.o
jcapistd.c  jconfig.vms jdinput.o   jinclude.h  makeddep.vc6    rdbmp.o
jcapistd.lo jconfig.wat jdmainct.c  jmemansi.c  makeddsp.vc6    rdcolmap.c
jcapistd.o  jcparam.c   jdmainct.lo jmemdos.c   makedfil.v10    rdcolmap.o
jcarith.c   jcparam.lo  jdmainct.o  jmemdosa.asm    makedmak.vc6    rdgif.c
jcarith.lo  jcparam.o   jdmarker.c  jmemmac.c   makedvcx.v10    rdgif.o
jcarith.o   jcprepct.c  jdmarker.lo jmemmgr.c   makefile.ansi   rdjpgcom

Я хотел бы использовать программу на мультиплатформенности, поэтому я бы предпочел не устанавливать библиотеку libjpeg.

1 ответ

Используйте libjpeg в команде компиляции:

gcc main.c -ljpeg -o main.o

Я написал учебник для C: http://www.staerk.de/thorsten/C_Programming_Tutorial

Другие вопросы по тегам