Не могу скомпилировать libbpg-0.9.7 для BPG (лучшая портативная графика) в Ubuntu 14.04

503
Roger

Obs .: Я предполагаю, что я не устанавливаю что-то в make-файле или что я использую рабочие пакеты SDL-devel и SDL_image-devel, которые они просят установить ранее. На самом деле, я устанавливаю "libsdl2-image-2.0-0" и "libsdl2-image-dev" из репозиториев ... Однако, файл readme говорит, что они нужны только для BPGviewer:

(# Compile bpgview (SDL and SDL_image libraries needed) #USE_BPGVIEW=y)

OBS.1: я только что нашел это: https://unix.stackexchange.com/questions/181735/how-to-install-bpg-better-portable-graphics-on-linux-mint-17

libbpg зависит от версии 1.6 библиотеки PNG, которую нельзя установить с помощью apt-get в Linux Mint 17. Эта библиотека несовместима с libpng12 и должна быть установлена ​​из исходного кода (я использовал версию 1.6.16)

Ну, во всяком случае, я пытаюсь скомпилировать libbpg-0.9.7 с помощью файла readme:

2) Compilation and Installation Notes -------------------------------------  2.1) Linux ----------  - Edit the Makefile to change the compile options (the default compile options should be OK). Type 'make' to compile and 'make install' to install the compiled binaries.  - Use 'make -j N' where N is the number of CPU cores to compile faster.  - The following packages must be installed: SDL-devel SDL_image-devel yasm. It is recommended to use yasm version >= 1.3.0 to have a faster compilation. 

Так:

sudo apt-get install --force-yes -y libsdl2-image-2.0-0 libsdl2-image-dev yasm sudo apt-get install -y emscripten 

А потом:

wget http://bellard.org/bpg/libbpg-0.9.7.tar.gz tar xzf libbpg-0.9.7.tar.gz cd libbpg-0.9.7/ make 

Тем не менее, это не работает:

$: make -j 6 install gcc -Os -Wall -MMD -fno-asynchronous-unwind-tables -fdata-sections -ffunction-sections -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_REENTRANT -I. -DCONFIG_BPG_VERSION=\"0.9.7\" -g -DUSE_X265 -Wno-unused-but-set-variable -c -o bpgenc.o bpgenc.c make -C x265.out/12bit make[1]: Entering directory `/home/rgr/src/bpg/libbpg-0.9.7/x265.out/12bit' make[1]: *** No targets specified and no makefile found. Stop. ar rcs libbpg.a libavcodec/hevc_cabac.o libavcodec/hevc_filter.o libavcodec/hevc.o libavcodec/hevcpred.o libavcodec/hevc_refs.o libavcodec/hevcdsp.o libavcodec/hevc_mvs.o libavcodec/hevc_ps.o libavcodec/hevc_sei.o libavcodec/utils.o libavcodec/cabac.o libavcodec/golomb.o libavcodec/videodsp.o libavutil/mem.o libavutil/buffer.o libavutil/log2_tab.o libavutil/frame.o libavutil/pixdesc.o libavutil/md5.o libbpg.o make[1]: Leaving directory `/home/rgr/src/bpg/libbpg-0.9.7/x265.out/12bit' make: *** [x265_make] Error 2 make: *** Waiting for unfinished jobs.... bpgenc.c: In function ‘read_png’: bpgenc.c:987:9: warning: implicit declaration of function ‘png_set_alpha_mode’ [-Wimplicit-function-declaration] png_set_alpha_mode(png_ptr, PNG_ALPHA_ASSOCIATED, PNG_GAMMA_LINEAR); ^ bpgenc.c:987:37: error: ‘PNG_ALPHA_ASSOCIATED’ undeclared (first use in this function) png_set_alpha_mode(png_ptr, PNG_ALPHA_ASSOCIATED, PNG_GAMMA_LINEAR); ^ bpgenc.c:987:37: note: each undeclared identifier is reported only once for each function it appears in bpgenc.c:987:59: error: ‘PNG_GAMMA_LINEAR’ undeclared (first use in this function) png_set_alpha_mode(png_ptr, PNG_ALPHA_ASSOCIATED, PNG_GAMMA_LINEAR); ^ bpgenc.c:1072:26: warning: passing argument 5 of ‘png_get_iCCP’ from incompatible pointer type [enabled by default] &name, &comp_type, &iccp_buf, &iccp_buf_len) ==  ^ In file included from /usr/include/png.h:540:0, from bpgenc.c:32: /usr/include/png.h:2490:8: note: expected ‘png_charpp’ but argument is of type ‘png_byte **’ extern PNG_EXPORT(png_uint_32,png_get_iCCP) PNGARG((png_structp png_ptr, ^ make: *** [bpgenc.o] Error 1 

Содержимое файла make:

# libbpg Makefile #  # Compile options: # # Enable compilation of Javascript decoder with Emscripten #USE_EMCC=y # Enable x265 for the encoder USE_X265=y # Enable the JCTVC code (best quality but slow) for the encoder #USE_JCTVC=y # Compile bpgview (SDL and SDL_image libraries needed) #USE_BPGVIEW=y # Enable it to use bit depths > 12 (need more tests to validate encoder) #USE_JCTVC_HIGH_BIT_DEPTH=y # Enable the cross compilation for Windows #CONFIG_WIN32=y # Enable for compilation on MacOS X #CONFIG_APPLE=y # Installation prefix prefix=/usr/local   #################################  ifdef CONFIG_WIN32 CROSS_PREFIX:=x86_64-w64-mingw32- #CROSS_PREFIX=i686-w64-mingw32- EXE:=.exe else CROSS_PREFIX:= EXE:= endif  CC=$(CROSS_PREFIX)gcc CXX=$(CROSS_PREFIX)g++ AR=$(CROSS_PREFIX)ar EMCC=emcc  PWD:=$(shell pwd)  CFLAGS:=-Os -Wall -MMD -fno-asynchronous-unwind-tables -fdata-sections -ffunction-sections -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -fomit-frame-pointer CFLAGS+=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_REENTRANT CFLAGS+=-I. CFLAGS+=-DCONFIG_BPG_VERSION=\"$(shell cat VERSION)\" ifdef USE_JCTVC_HIGH_BIT_DEPTH CFLAGS+=-DRExt__HIGH_BIT_DEPTH_SUPPORT endif  # Emscriptem config EMLDFLAGS:=-s "EXPORTED_FUNCTIONS=['_bpg_decoder_open','_bpg_decoder_decode','_bpg_decoder_get_info','_bpg_decoder_start','_bpg_decoder_get_frame_duration','_bpg_decoder_get_line','_bpg_decoder_close','_malloc','_free']" EMLDFLAGS+=-s NO_FILESYSTEM=1 -s NO_BROWSER=1 #EMLDFLAGS+=-O1 --pre-js pre.js --post-js post.js # Note: the closure compiler is disabled because it adds unwanted global symbols EMLDFLAGS+=-O3 --memory-init-file 0 --closure 0 --pre-js pre.js --post-js post.js EMCFLAGS:=$(CFLAGS)  LDFLAGS=-g ifdef CONFIG_APPLE LDFLAGS+=-Wl,-dead_strip else LDFLAGS+=-Wl,--gc-sections endif CFLAGS+=-g CXXFLAGS=$(CFLAGS)  PROGS=bpgdec$(EXE) bpgenc$(EXE) ifdef USE_BPGVIEW PROGS+=bpgview$(EXE) endif ifdef USE_EMCC PROGS+=bpgdec.js bpgdec8.js bpgdec8a.js endif  all: $(PROGS)  LIBBPG_OBJS:=$(addprefix libavcodec/, \ hevc_cabac.o hevc_filter.o hevc.o hevcpred.o hevc_refs.o\ hevcdsp.o hevc_mvs.o hevc_ps.o hevc_sei.o\ utils.o cabac.o golomb.o videodsp.o ) LIBBPG_OBJS+=$(addprefix libavutil/, mem.o buffer.o log2_tab.o frame.o pixdesc.o md5.o ) LIBBPG_OBJS+=libbpg.o  LIBBPG_JS_OBJS:=$(patsubst %.o, %.js.o, $(LIBBPG_OBJS)) tmalloc.js.o  LIBBPG_JS8_OBJS:=$(patsubst %.o, %.js8.o, $(LIBBPG_OBJS)) tmalloc.js8.o  LIBBPG_JS8A_OBJS:=$(patsubst %.o, %.js8a.o, $(LIBBPG_OBJS)) tmalloc.js8a.o  $(LIBBPG_OBJS): CFLAGS+=-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DHAVE_AV_CONFIG_H -std=c99 -D_GNU_SOURCE=1 -DUSE_VAR_BIT_DEPTH -DUSE_PRED  $(LIBBPG_JS_OBJS): EMCFLAGS+=-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DHAVE_AV_CONFIG_H -std=c99 -D_GNU_SOURCE=1 -DUSE_VAR_BIT_DEPTH  $(LIBBPG_JS8_OBJS): EMCFLAGS+=-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DHAVE_AV_CONFIG_H -std=c99 -D_GNU_SOURCE=1  $(LIBBPG_JS8A_OBJS): EMCFLAGS+=-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DHAVE_AV_CONFIG_H -std=c99 -D_GNU_SOURCE=1 -DUSE_PRED  BPGENC_OBJS:=bpgenc.o BPGENC_LIBS:=  ifdef USE_X265  X265_LIBS:=./x265.out/8bit/libx265.a ./x265.out/10bit/libx265.a ./x265.out/12bit/libx265.a BPGENC_OBJS+=x265_glue.o $(X265_LIBS)  bpgenc.o: CFLAGS+=-DUSE_X265 x265_glue.o: CFLAGS+=-I./x265/source -I./x265.out/8bit x265_glue.o: $(X265_LIBS)  ifdef CONFIG_WIN32 CMAKE_OPTS:=-DCMAKE_TOOLCHAIN_FILE=../../x265/build/msys/toolchain-x86_64-w64-mingw32.cmake else CMAKE_OPTS:= endif  x265.out: mkdir -p x265.out/8bit x265.out/10bit x265.out/12bit cd x265.out/12bit && cmake ../../x265/source $(CMAKE_OPTS) -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF -DMAIN12=ON cd x265.out/10bit && cmake ../../x265/source $(CMAKE_OPTS) -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF -DMAIN10=ON cd x265.out/8bit && cmake ../../x265/source $(CMAKE_OPTS) -DLINKED_10BIT=ON -DLINKED_12BIT=ON -DENABLE_SHARED=OFF -DENABLE_CLI=OFF  # use this target to manually rebuild x265 x265_make: | x265.out $(MAKE) -C x265.out/12bit $(MAKE) -C x265.out/10bit $(MAKE) -C x265.out/8bit  x265_clean: rm -rf x265.out  $(X265_LIBS): x265_make  else  x265_clean:  endif # USE_X265  ifdef USE_JCTVC JCTVC_OBJS=$(addprefix jctvc/TLibEncoder/, SyntaxElementWriter.o TEncSbac.o \ TEncBinCoderCABACCounter.o TEncGOP.o\ TEncSampleAdaptiveOffset.o TEncBinCoderCABAC.o TEncAnalyze.o\ TEncEntropy.o TEncTop.o SEIwrite.o TEncPic.o TEncRateCtrl.o\ WeightPredAnalysis.o TEncSlice.o TEncCu.o NALwrite.o TEncCavlc.o\ TEncSearch.o TEncPreanalyzer.o) JCTVC_OBJS+=jctvc/TLibVideoIO/TVideoIOYuv.o JCTVC_OBJS+=$(addprefix jctvc/TLibCommon/, TComWeightPrediction.o TComLoopFilter.o\ TComBitStream.o TComMotionInfo.o TComSlice.o ContextModel3DBuffer.o\ TComPic.o TComRdCostWeightPrediction.o TComTU.o TComPicSym.o\ TComPicYuv.o TComYuv.o TComTrQuant.o TComInterpolationFilter.o\ ContextModel.o TComSampleAdaptiveOffset.o SEI.o TComPrediction.o\ TComDataCU.o TComChromaFormat.o Debug.o TComRom.o\ TComPicYuvMD5.o TComRdCost.o TComPattern.o TComCABACTables.o) JCTVC_OBJS+=jctvc/libmd5/libmd5.o JCTVC_OBJS+=jctvc/TAppEncCfg.o jctvc/TAppEncTop.o jctvc/program_options_lite.o   $(JCTVC_OBJS) jctvc_glue.o: CFLAGS+=-I$(PWD)/jctvc -Wno-sign-compare  jctvc/libjctvc.a: $(JCTVC_OBJS) $(AR) rcs $@ $^  BPGENC_OBJS+=jctvc_glue.o jctvc/libjctvc.a  bpgenc.o: CFLAGS+=-DUSE_JCTVC endif # USE_JCTVC   ifdef CONFIG_WIN32  BPGDEC_LIBS:=-lpng -lz BPGENC_LIBS+=-lpng -ljpeg -lz BPGVIEW_LIBS:=-lmingw32 -lSDLmain -lSDL_image -lSDL -mwindows  else  ifdef CONFIG_APPLE LIBS:= else LIBS:=-lrt endif # !CONFIG_APPLE  LIBS+=-lm -lpthread  BPGDEC_LIBS:=-lpng $(LIBS) BPGENC_LIBS+=-lpng -ljpeg $(LIBS) BPGVIEW_LIBS:=-lSDL_image -lSDL $(LIBS)  endif #!CONFIG_WIN32  bpgenc.o: CFLAGS+=-Wno-unused-but-set-variable  libbpg.a: $(LIBBPG_OBJS)  $(AR) rcs $@ $^  bpgdec$(EXE): bpgdec.o libbpg.a $(CC) $(LDFLAGS) -o $@ $^ $(BPGDEC_LIBS)  bpgenc$(EXE): $(BPGENC_OBJS) $(CXX) $(LDFLAGS) -o $@ $^ $(BPGENC_LIBS)  bpgview$(EXE): bpgview.o libbpg.a $(CC) $(LDFLAGS) -o $@ $^ $(BPGVIEW_LIBS)  bpgdec.js: $(LIBBPG_JS_OBJS) post.js $(EMCC) $(EMLDFLAGS) -s TOTAL_MEMORY=33554432 -o $@ $(LIBBPG_JS_OBJS)  bpgdec8.js: $(LIBBPG_JS8_OBJS) post.js $(EMCC) $(EMLDFLAGS) -s TOTAL_MEMORY=33554432 -o $@ $(LIBBPG_JS8_OBJS)  bpgdec8a.js: $(LIBBPG_JS8A_OBJS) post.js $(EMCC) $(EMLDFLAGS) -s TOTAL_MEMORY=33554432 -o $@ $(LIBBPG_JS8A_OBJS)  size: strip bpgdec size bpgdec libbpg.o libavcodec/*.o libavutil/*.o | sort -n gzip < bpgdec | wc  install: bpgenc bpgdec install -s -m 755 $^ $(prefix)/bin  CLEAN_DIRS=doc html libavcodec libavutil \ jctvc jctvc/TLibEncoder jctvc/TLibVideoIO jctvc/TLibCommon jctvc/libmd5  clean: x265_clean rm -f $(PROGS) *.o *.a *.d *~ $(addsuffix /*.o, $(CLEAN_DIRS)) \ $(addsuffix /*.d, $(CLEAN_DIRS)) $(addsuffix /*~, $(CLEAN_DIRS)) \ $(addsuffix /*.a, $(CLEAN_DIRS))  %.o: %.c $(CC) $(CFLAGS) -c -o $@ $<  %.o: %.cpp $(CXX) $(CXXFLAGS) -c -o $@ $<  %.js.o: %.c $(EMCC) $(EMCFLAGS) -c -o $@ $<  %.js8.o: %.c $(EMCC) $(EMCFLAGS) -c -o $@ $<  %.js8a.o: %.c $(EMCC) $(EMCFLAGS) -c -o $@ $<  -include $(wildcard *.d) -include $(wildcard libavcodec/*.d) -include $(wildcard libavutil/*.d) -include $(wildcard jctvc/*.d) -include $(wildcard jctvc/TLibEncoder/*.d) -include $(wildcard jctvc/TLibVideoIO/*.d) -include $(wildcard jctvc/TLibCommon/*.d) -include $(wildcard jctvc/libmd5/*.d) 

Есть догадки? Благодарю.

0

1 ответ на вопрос

1
Roger

Вот что я сделал, чтобы сделать это:

Из Ubuntu: https://askubuntu.com/questions/615108/issues-finding-the-location-of-package-libsdl2-image-2-0-0 https://unix.stackexchange.com/questions/181735/ как в установке-БПГ-лучше-портативными-графики-на-Linux-мята-17

LIBPNG libbpg зависит от версии 1.6 библиотеки PNG, которую нельзя установить с помощью apt-get. Эта библиотека несовместима с libpng12 и должна быть установлена ​​из исходного кода (я использовал версию 1.6.16). Лучше не менять официально установленный пакет libpng12-dev, а указывать в Makefile из libbpg, где найти libpng 1.6.

sudo apt-get install -y libsdl-image1.2-dev libsdl1.2-dev libjpeg8-dev emscripten sudo apt-get install --force-yes -y yasm 

скачать, настроить, сделать и сделать установку PNG 1.6

wget -O libpng-1.6.28.tar.xz "https://downloads.sourceforge.net/project/libpng/libpng16/1.6.28/libpng-1.6.28.tar.gz?ts=$(date +%s)" tar xf libpng-1.6.28.tar.xz ./configure --help ./configure make -j sudo make install sudo checkinstall sudo ldconfig /usr/local/lib 

Done. The new package has been installed and saved to /home/rgr/src/libpng/libpng-1.6.28/libpng_1.6.28-1_amd64.deb You can remove it from your system anytime using:  

dpkg -r libpng

Скачайте, сделайте и сделайте установку BPG

mkdir bpg cd bpg wget http://bellard.org/bpg/libbpg-0.9.5.tar.gz tar xzf libbpg-0.9.5.tar.gz cd libbpg-0.9.5/ 

отредактируйте Makefile и вставьте две следующие директивы:

sudo nano Makefile "CFLAGS+=-I/usr/local/include" after the line "CFLAGS+=-I" "LDFLAGS+=-L /usr/local/lib" before the line "CFLAGS+=-g" 

Затем: make -j 6 sudo make install sudo checkinstall sudo ldconfig / usr / local / lib


Done. The new package has been installed and saved to /home/rgr/src/bpg/libbpg-0.9.5/libbpg_0.9.5-1_amd64.deb You can remove it from your system anytime using:  

dpkg -r libbpg

Похожие вопросы