2017-03-11 5 views
0

ccextractor(オープンソースクローズドキャプション抽出プログラム)のビルドメカニズムをカスタムMakefileからAutotools生成Makefileに変換しようとしています。Makefileを使ってビルドして、スクリプトは動作しますが、同等のMakefile.amはありません(未定義の参照エラーを返します)

SHELL = /bin/sh 

CC = gcc 
SYS := $(shell gcc -dumpmachine) 
CFLAGS = -O3 -std=gnu99 -s 
INCLUDE = -Isrc/gpacmp4/ -Isrc/libpng -Isrc/lib_hash -Isrc/protobuf-c -Isrc/zlib -Isrc/lib_ccx -Isrc/. 
INCLUDE += -Isrc/zvbi -Isrc/utf8proc 
ALL_FLAGS = -Wno-write-strings -D_FILE_OFFSET_BITS=64 -DVERSION_FILE_PRESENT 
LDFLAGS = -lm 

ifneq (, $(findstring linux, $(SYS))) 
CFLAGS +=-DGPAC_CONFIG_LINUX 
endif 
TARGET = ccextractor 

OBJS_DIR = objs 
VPATH = src:src/gpacmp4:src/libpng:src/zlib:src/lib_ccx:src/zvbi:src/lib_hash:src/utf8proc:src/protobuf-c 

SRCS_DIR = src 
SRCS_C = $(wildcard $(SRCS_DIR)/*.c) 
OBJS = $(SRCS_C:$(SRCS_DIR)/%.c=$(OBJS_DIR)/%.o) 

SRCS_CCX_DIR = $(SRCS_DIR)/lib_ccx 
SRCS_CCX = $(wildcard $(SRCS_CCX_DIR)/*.c) 
OBJS_CCX = $(SRCS_CCX:$(SRCS_CCX_DIR)/%.c=$(OBJS_DIR)/%.o) 

SRCS_PNG_DIR = $(SRCS_DIR)/libpng 
SRCS_PNG = $(wildcard $(SRCS_PNG_DIR)/*.c) 
OBJS_PNG = $(SRCS_PNG:$(SRCS_PNG_DIR)/%.c=$(OBJS_DIR)/%.o) 

SRCS_ZVBI_DIR = $(SRCS_DIR)/zvbi 
SRCS_ZVBI = $(wildcard $(SRCS_ZVBI_DIR)/*.c) 
OBJS_ZVBI = $(SRCS_ZVBI:$(SRCS_ZVBI_DIR)/%.c=$(OBJS_DIR)/%.o) 

SRCS_GPACMP4_DIR = $(SRCS_DIR)/gpacmp4 
SRCS_GPACMP4_C = $(wildcard $(SRCS_GPACMP4_DIR)/*.c) 
SRCS_GPACMP4_CPP = $(wildcard $(SRCS_GPACMP4_DIR)/*.cpp) 
OBJS_GPACMP4 = $(SRCS_GPACMP4_C:$(SRCS_GPACMP4_DIR)/%.c=$(OBJS_DIR)/%.o) \ 
       $(SRCS_GPACMP4_CPP:$(SRCS_GPACMP4_DIR)/%.cpp=$(OBJS_DIR)/%.o) 

SRCS_ZLIB_DIR = $(SRCS_DIR)/zlib 
SRCS_ZLIB = $(wildcard $(SRCS_ZLIB_DIR)/*.c) 
OBJS_ZLIB = $(SRCS_ZLIB:$(SRCS_ZLIB_DIR)/%.c=$(OBJS_DIR)/%.o) 

SRCS_HASH_DIR = $(SRCS_DIR)/lib_hash 
SRCS_HASH = $(wildcard $(SRCS_HASH_DIR)/*.c) 
OBJS_HASH = $(SRCS_HASH:$(SRCS_HASH_DIR)/%.c=$(OBJS_DIR)/%.o) 

SRCS_UTF8_DIR = $(SRCS_DIR)/utf8proc 
SRCS_UTF8 = $(SRCS_UTF8_DIR)/utf8proc.c 
OBJS_UTF8 = $(SRCS_UTF8:$(SRCS_UTF8_DIR)/%.c=$(OBJS_DIR)/%.o) 

INSTLALL = cp -f -p 
INSTLALL_PROGRAM = $(INSTLALL) 
DESTDIR = /usr/bin 

ifeq ($(ENABLE_HARDSUBX),yes) 
ENABLE_OCR=yes 
CFLAGS+=-DENABLE_HARDSUBX 
CFLAGS+= $(shell pkg-config --cflags libavcodec) 
CFLAGS+= $(shell pkg-config --cflags libavformat) 
CFLAGS+= $(shell pkg-config --cflags libavutil) 
CFLAGS+= $(shell pkg-config --cflags libswscale) 
AV_LDFLAGS+= $(shell pkg-config --libs libavcodec) 
AV_LDFLAGS+= $(shell pkg-config --libs libavformat) 
AV_LDFLAGS+= $(shell pkg-config --libs libavutil) 
AV_LDFLAGS+= $(shell pkg-config --libs libswscale) 
ifeq ($(AV_LDFLAGS),$(EMPTY)) 
$(error **ERROR** "libav not found") 
else 
$(info "libav found") 
endif 
LDFLAGS+= $(AV_LDFLAGS) 
endif 

ifeq ($(ENABLE_OCR),yes) 
CFLAGS+=-DENABLE_OCR -DPNG_NO_CONFIG_H 
LEPT_LDFLAGS+= $(shell pkg-config --libs lept) 

ifneq ($(shell pkg-config --exists tesseract), $(EMPTY)) 
TESS_LDFLAGS+= $(shell pkg-config --libs tesseract) 
TESS_CFLAGS+= $(shell pkg-config --cflags tesseract) 
else 
#fix for raspberry pi not having a pkgconfig file for tesseract 
ifneq ($(wildcard /usr/include/tesseract/*),$(EMPTY)) 
TESS_LDFLAGS+= -ltesseract 
TESS_CFLAGS+= -I/usr/include/tesseract 
endif 
endif 

#error checking of library are there or not 
ifeq ($(TESS_LDFLAGS),$(EMPTY)) 
$(error **ERROR** "tesseract not found") 
else 
#TODO print the version of library found 
$(info "tesseract found") 
endif 

ifeq ($(LEPT_LDFLAGS),$(EMPTY)) 
$(error **ERROR** "leptonica not found") 
else 
#TODO print the version of library found 
$(info "Leptonica found") 
endif 

CFLAGS += $(TESS_CFLAGS) 
CFLAGS += $(shell pkg-config --cflags lept) 
LDFLAGS += $(TESS_LDFLAGS) 
LDFLAGS += $(LEPT_LDFLAGS) 
endif 


ifeq ($(ENABLE_FFMPEG),yes) 
CFLAGS+=-DENABLE_FFMPEG 
CFLAGS+= $(shell pkg-config --cflags libavcodec) 
CFLAGS+= $(shell pkg-config --cflags libavformat) 
CFLAGS+= $(shell pkg-config --cflags libavutil) 
LDFLAGS+= $(shell pkg-config --libs libavcodec) 
LDFLAGS+= $(shell pkg-config --libs libavformat) 
LDFLAGS+= $(shell pkg-config --libs libavutil) 
endif 

.PHONY: all 
all: pre-build objs_dir $(TARGET) 

.PHONY: objs_dir 
objs_dir: 
    mkdir -p $(OBJS_DIR) 

$(TARGET): $(OBJS) $(OBJS_PNG) $(OBJS_GPACMP4) $(OBJS_ZVBI) $(OBJS_ZLIB) $(OBJS_HASH) $(OBJS_CCX) $(OBJS_UTF8) 
    $(CC) $(ALL_FLAGS) $(CFLAGS) $(OBJS) $(OBJS_CCX) $(OBJS_PNG) $(OBJS_ZVBI) $(OBJS_GPACMP4) $(OBJS_ZLIB) $(OBJS_HASH) $(OBJS_UTF8) $(LDFLAGS) -o [email protected] 

$(OBJS_DIR)/%.o: %.c 
    $(CC) -c $(ALL_FLAGS) $(INCLUDE) $(CFLAGS) $< -o [email protected] 

$(OBJS_DIR)/%.o: %.cpp 
    $(CC) -c $(ALL_FLAGS) $(INCLUDE) $(CFLAGS) $< -o [email protected] -Isrc/gpacmp4 

$(OBJS_DIR)/ccextractor.o: ccextractor.c 
    $(CC) -c $(ALL_FLAGS) $(INCLUDE) $(CFLAGS) -O0 $< -o [email protected] 

.PHONY: clean 
clean: 
    rm -rf $(TARGET) 2>/dev/null || true 
    rm -rf $(OBJS_CCX) $(OBJS_PNG) $(OBJS_ZLIB) $(OBJS_GPACMP4) $(OBJS_HASH) $(OBJS_UTF8) $(OBJS) 2>/dev/null || true 
    rm -rdf $(OBJS_DIR) 2>/dev/null || true 
    rm -rf .depend 2>/dev/null || true 

.PHONY: install 
install: $(TARGET) 
    $(INSTLALL_PROGRAM) $(TARGET) $(DESTDIR) 

.PHONY: uninstall 
uninstall: 
    rm -iv $(DESTDIR)/$(TARGET) 

.PHONY: depend dep 
depend dep: 
    $(CC) $(CFLAGS) $(INCLUDE) -E -MM $(SRCS_C) $(SRCS_PNG) $(SRCS_ZVBI) $(SRCS_ZLIB) $(SRCS_HASH) $(SRCS_UTF8) $(SRCS_CCX) \ 
     $(SRCS_GPACMP4_C) $(SRCS_GPACMP4_CPP) |\ 
     sed 's/^[a-zA-Z_0-9]*.o/$(OBJS_DIR)\/&/' > .depend 

.PHONY: pre-build 
pre-build: 
    ./pre-build.sh 

-include .depend 

"ccextractor" も構築しますbuild

buildスクリプトと呼ばれるshellスクリプトを使用して構築されている "ccextractor" は完全に罰金です:

#!/bin/bash 
BLD_FLAGS="-std=gnu99 -Wno-write-strings -DGPAC_CONFIG_LINUX -D_FILE_OFFSET_BITS=64 -DVERSION_FILE_PRESENT -DENABLE_OCR" 
BLD_INCLUDE="-Isrc -I /usr/include/leptonica/ -I /usr/include/tesseract/ -Isrc/lib_ccx/ -Isrc/gpacmp4/ -Isrc/libpng/ -Isrc/zlib/ -Isrc/zvbi -Isrc/lib_hash -Isrc/protobuf-c -Isrc/utf8proc" 
SRC_LIBPNG="$(find src/libpng/ -name '*.c')" 
SRC_ZLIB="$(find src/zlib/ -name '*.c')" 
SRC_ZVBI="$(find src/zvbi/ -name '*.c')" 
SRC_CCX="$(find src/lib_ccx/ -name '*.c')" 
SRC_GPAC="$(find src/gpacmp4/ -name '*.c')" 
SRC_HASH="$(find src/lib_hash/ -name '*.c')" 
SRC_PROTOBUF="$(find src/protobuf-c/ -name '*.c')" 
SRC_UTF8PROC="src/utf8proc/utf8proc.c" 
BLD_SOURCES="src/ccextractor.c $SRC_CCX $SRC_GPAC $SRC_ZLIB $SRC_ZVBI $SRC_LIBPNG $SRC_HASH $SRC_PROTOBUF $SRC_UTF8PROC" 
BLD_LINKER="-lm -zmuldefs -l tesseract -l lept" 

.**Stripped a call for shell script that checks git commit (Nothing that would interfere with the build** 

out=$((LC_ALL=C gcc $BLD_FLAGS $BLD_INCLUDE -o ccextractor $BLD_SOURCES $BLD_LINKER) 2>&1) 
res=$? 
if [[ $out == *"gcc: command not found"* ]] 
then 
    echo "Error: please install gcc"; 
    exit 1 
fi 
if [[ $out == *"curl.h: No such file or directory"* ]] 
then 
    echo "Error: please install curl development library (libcurl4-gnutls-dev for Debian/Ubuntu)"; 
    exit 2 
fi 
if [[ $out == *"capi.h: No such file or directory"* ]] 
then 
    echo "Error: please install tesseract development library (tesseract-ocr-dev for Debian/Ubuntu)"; 
    exit 3 
fi 
if [[ $out == *"allheaders.h: No such file or directory"* ]] 
then 
    echo "Error: please install leptonica development library (libleptonica-dev for Debian/Ubuntu)"; 
    exit 4 
fi 
if [[ $res -ne 0 ]] # Unknown error 
then 
    echo "Compiled with errors" 
    >&2 echo "$out" 
    exit 5 
fi 
echo "Compilation successful"; 

提供されるMakefileはこのようになります

以上でビルドMakefilebuildスクリプトは正常に動作します。私Makefile.amは、次のようになります。

AUTOMAKE_OPTIONS = foreign 

bin_PROGRAMS = ccextractor 
ccextractor_SOURCES = \ 
       src/ccextractor.c \ 
       src/gpacmp4/avc_ext.c \ 
       src/gpacmp4/avilib.c \ 
       src/gpacmp4/av_parsers.c \ 
       src/gpacmp4/base_encoding.c \ 
       src/gpacmp4/bitstream.c \ 
       src/gpacmp4/box_code_3gpp.c \ 
       src/gpacmp4/box_code_adobe.c \ 
       src/gpacmp4/box_code_apple.c \ 
       src/gpacmp4/box_code_base.c \ 
       src/gpacmp4/box_code_drm.c \ 
       src/gpacmp4/box_code_meta.c \ 
       src/gpacmp4/box_funcs.c \ 
       src/gpacmp4/configfile.c \ 
       src/gpacmp4/data_map.c \ 
       src/gpacmp4/desc_private.c \ 
       src/gpacmp4/descriptors.c \ 
       src/gpacmp4/drm_sample.c \ 
       src/gpacmp4/error.c \ 
       src/gpacmp4/gpac/avparse.h \ 
       src/gpacmp4/gpac/base_coding.h \ 
       src/gpacmp4/gpac/bitstream.h \ 
       src/gpacmp4/gpac/config_file.h \ 
       src/gpacmp4/gpac/configuration.h \ 
       src/gpacmp4/gpac/constants.h \ 
       src/gpacmp4/gpac/events_constants.h \ 
       src/gpacmp4/gpac/ietf.h \ 
       src/gpacmp4/gpac/internal 
       src/gpacmp4/gpac/internal/avilib.h \ 
       src/gpacmp4/gpac/internal/isomedia_dev.h \ 
       src/gpacmp4/gpac/internal/media_dev.h \ 
       src/gpacmp4/gpac/internal/odf_dev.h \ 
       src/gpacmp4/gpac/internal/odf_parse_common.h \ 
       src/gpacmp4/gpac/internal/ogg.h \ 
       src/gpacmp4/gpac/isomedia.h \ 
       src/gpacmp4/gpac/list.h \ 
       src/gpacmp4/gpac/math.h \ 
       src/gpacmp4/gpac/media_tools.h \ 
       src/gpacmp4/gpac/mpeg4_odf.h \ 
       src/gpacmp4/gpac/network.h \ 
       src/gpacmp4/gpac/revision.h \ 
       src/gpacmp4/gpac/setup.h \ 
       src/gpacmp4/gpac/sync_layer.h \ 
       src/gpacmp4/gpac/tools.h \ 
       src/gpacmp4/gpac/utf.h \ 
       src/gpacmp4/gpac/version.h \ 
       src/gpacmp4/gpac_ogg.c \ 
       src/gpacmp4/hinting.c \ 
       src/gpacmp4/ipmpx_code.c \ 
       src/gpacmp4/ipmpx_parse.c \ 
       src/gpacmp4/isom_intern.c \ 
       src/gpacmp4/isom_read.c \ 
       src/gpacmp4/isom_store.c \ 
       src/gpacmp4/isom_write.c \ 
       src/gpacmp4/list.c \ 
       src/gpacmp4/math.c \ 
       src/gpacmp4/media.c \ 
       src/gpacmp4/media_odf.c \ 
       src/gpacmp4/meta.c \ 
       src/gpacmp4/movie_fragments.c \ 
       src/gpacmp4/mp4.c \ 
       src/gpacmp4/odf_code.c \ 
       src/gpacmp4/odf_codec.c \ 
       src/gpacmp4/odf_command.c \ 
       src/gpacmp4/os_config_init.c \ 
       src/gpacmp4/os_divers.c \ 
       src/gpacmp4/os_file.c \ 
       src/gpacmp4/qos.c \ 
       src/gpacmp4/ReadMe.txt 
       src/gpacmp4/sample_descs.c \ 
       src/gpacmp4/slc.c \ 
       src/gpacmp4/stbl_read.c \ 
       src/gpacmp4/stbl_write.c \ 
       src/gpacmp4/track.c \ 
       src/gpacmp4/tx3g.c \ 
       src/gpacmp4/url.c \ 
       src/gpacmp4/utf.c \ 
       src/lib_ccx/activity.c \ 
       src/lib_ccx/activity.h \ 
       src/lib_ccx/asf_constants.h \ 
       src/lib_ccx/asf_functions.c \ 
       src/lib_ccx/avc_functions.c \ 
       src/lib_ccx/avc_functions.h \ 
       src/lib_ccx/bitstream.h \ 
       src/lib_ccx/cc_bitstream.c \ 
       src/lib_ccx/ccx_common_char_encoding.c \ 
       src/lib_ccx/ccx_common_char_encoding.h \ 
       src/lib_ccx/ccx_common_common.c \ 
       src/lib_ccx/ccx_common_common.h \ 
       src/lib_ccx/ccx_common_constants.c \ 
       src/lib_ccx/ccx_common_constants.h \ 
       src/lib_ccx/ccx_common_option.c \ 
       src/lib_ccx/ccx_common_option.h \ 
       src/lib_ccx/ccx_common_platform.h \ 
       src/lib_ccx/ccx_common_structs.h \ 
       src/lib_ccx/ccx_common_timing.c \ 
       src/lib_ccx/ccx_common_timing.h \ 
       src/lib_ccx/ccx_decoders_608.c \ 
       src/lib_ccx/ccx_decoders_608.h \ 
       src/lib_ccx/ccx_decoders_708.c \ 
       src/lib_ccx/ccx_decoders_708_encoding.c \ 
       src/lib_ccx/ccx_decoders_708_encoding.h \ 
       src/lib_ccx/ccx_decoders_708.h \ 
       src/lib_ccx/ccx_decoders_708_output.c \ 
       src/lib_ccx/ccx_decoders_708_output.h \ 
       src/lib_ccx/ccx_decoders_common.c \ 
       src/lib_ccx/ccx_decoders_common.h \ 
       src/lib_ccx/ccx_decoders_isdb.c \ 
       src/lib_ccx/ccx_decoders_isdb.h \ 
       src/lib_ccx/ccx_decoders_structs.h \ 
       src/lib_ccx/ccx_decoders_vbi.c \ 
       src/lib_ccx/ccx_decoders_vbi.h \ 
       src/lib_ccx/ccx_decoders_xds.c \ 
       src/lib_ccx/ccx_decoders_xds.h \ 
       src/lib_ccx/ccx_demuxer.c \ 
       src/lib_ccx/ccx_demuxer.h \ 
       src/lib_ccx/ccx_dtvcc.c \ 
       src/lib_ccx/ccx_dtvcc.h \ 
       src/lib_ccx/ccx_encoders_common.c \ 
       src/lib_ccx/ccx_encoders_common.h \ 
       src/lib_ccx/ccx_encoders_curl.c \ 
       src/lib_ccx/ccx_encoders_g608.c \ 
       src/lib_ccx/ccx_encoders_helpers.c \ 
       src/lib_ccx/ccx_encoders_helpers.h \ 
       src/lib_ccx/ccx_encoders_sami.c \ 
       src/lib_ccx/ccx_encoders_smptett.c \ 
       src/lib_ccx/ccx_encoders_splitbysentence.c \ 
       src/lib_ccx/ccx_encoders_spupng.c \ 
       src/lib_ccx/ccx_encoders_spupng.h \ 
       src/lib_ccx/ccx_encoders_srt.c \ 
       src/lib_ccx/ccx_encoders_ssa.c \ 
       src/lib_ccx/ccx_encoders_structs.h \ 
       src/lib_ccx/ccx_encoders_transcript.c \ 
       src/lib_ccx/ccx_encoders_webvtt.c \ 
       src/lib_ccx/ccx_encoders_xds.c \ 
       src/lib_ccx/ccx_encoders_xds.h \ 
       src/lib_ccx/ccx_gxf.c \ 
       src/lib_ccx/ccx_gxf.h \ 
       src/lib_ccx/ccx_mp4.h \ 
       src/lib_ccx/ccx_share.c \ 
       src/lib_ccx/ccx_share.h \ 
       src/lib_ccx/ccx_sub_entry_message.pb-c.c \ 
       src/lib_ccx/ccx_sub_entry_message.pb-c.h \ 
       src/lib_ccx/CMakeLists.txt 
       src/lib_ccx/compile_info.h \ 
       src/lib_ccx/compile_info_real.h \ 
       src/lib_ccx/configuration.c \ 
       src/lib_ccx/configuration.h \ 
       src/lib_ccx/disable_warnings.h \ 
       src/lib_ccx/dvb_subtitle_decoder.c \ 
       src/lib_ccx/dvb_subtitle_decoder.h \ 
       src/lib_ccx/dvd_subtitle_decoder.c \ 
       src/lib_ccx/dvd_subtitle_decoder.h \ 
       src/lib_ccx/es_functions.c \ 
       src/lib_ccx/es_userdata.c \ 
       src/lib_ccx/ffmpeg_intgr.c \ 
       src/lib_ccx/ffmpeg_intgr.h \ 
       src/lib_ccx/file_buffer.h \ 
       src/lib_ccx/file_functions.c \ 
       src/lib_ccx/general_loop.c \ 
       src/lib_ccx/hamming.h \ 
       src/lib_ccx/hardsubx.c \ 
       src/lib_ccx/hardsubx_classifier.c \ 
       src/lib_ccx/hardsubx_decoder.c \ 
       src/lib_ccx/hardsubx.h \ 
       src/lib_ccx/hardsubx_imgops.c \ 
       src/lib_ccx/hardsubx_utility.c \ 
       src/lib_ccx/lib_ccx.c \ 
       src/lib_ccx/lib_ccx.h \ 
       src/lib_ccx/list.h \ 
       src/lib_ccx/matroska.c \ 
       src/lib_ccx/matroska.h \ 
       src/lib_ccx/myth.c \ 
       src/lib_ccx/networking.c \ 
       src/lib_ccx/networking.h \ 
       src/lib_ccx/ocr.c \ 
       src/lib_ccx/ocr.h \ 
       src/lib_ccx/output.c \ 
       src/lib_ccx/params.c \ 
       src/lib_ccx/params_dump.c \ 
       src/lib_ccx/sequencing.c \ 
       src/lib_ccx/spupng_encoder.c \ 
       src/lib_ccx/spupng_encoder.h \ 
       src/lib_ccx/stdintmsc.h \ 
       src/lib_ccx/stream_functions.c \ 
       src/lib_ccx/teletext.h \ 
       src/lib_ccx/telxcc.c \ 
       src/lib_ccx/ts_functions.c \ 
       src/lib_ccx/ts_functions.h \ 
       src/lib_ccx/ts_info.c \ 
       src/lib_ccx/ts_tables.c \ 
       src/lib_ccx/ts_tables_epg.c \ 
       src/lib_ccx/utility.c \ 
       src/lib_ccx/utility.h \ 
       src/lib_ccx/wtv_constants.h \ 
       src/lib_ccx/wtv_functions.c \ 
       src/lib_hash/sha2.c \ 
       src/lib_hash/sha2.h \ 
       src/libpng/png.c \ 
       src/libpng/pngconf.h \ 
       src/libpng/pngdebug.h \ 
       src/libpng/pngerror.c \ 
       src/libpng/pngget.c \ 
       src/libpng/png.h \ 
       src/libpng/pnginfo.h \ 
       src/libpng/pnglibconf.h \ 
       src/libpng/pngmem.c \ 
       src/libpng/pngpread.c \ 
       src/libpng/pngpriv.h \ 
       src/libpng/pngread.c \ 
       src/libpng/pngrio.c \ 
       src/libpng/pngrtran.c \ 
       src/libpng/pngrutil.c \ 
       src/libpng/pngset.c \ 
       src/libpng/pngstruct.h \ 
       src/libpng/pngtrans.c \ 
       src/libpng/pngwio.c \ 
       src/libpng/pngwrite.c \ 
       src/libpng/pngwtran.c \ 
       src/libpng/pngwutil.c \ 
       src/protobuf-c/protobuf-c.c \ 
       src/protobuf-c/protobuf-c.h \ 
       src/utf8proc/utf8proc.c \ 
       src/utf8proc/utf8proc_data.c \ 
       src/utf8proc/utf8proc.h \ 
       src/win_iconv/iconv.h \ 
       src/win_iconv/win_iconv.c \ 
       src/win_spec_incld/dirent.h \ 
       src/win_spec_incld/inttypes.h \ 
       src/win_spec_incld/stdint.h \ 
       src/zlib/adler32.c \ 
       src/zlib/compress.c \ 
       src/zlib/crc32.c \ 
       src/zlib/crc32.h \ 
       src/zlib/deflate.c \ 
       src/zlib/deflate.h \ 
       src/zlib/gzclose.c \ 
       src/zlib/gzguts.h \ 
       src/zlib/gzlib.c \ 
       src/zlib/gzread.c \ 
       src/zlib/gzwrite.c \ 
       src/zlib/infback.c \ 
       src/zlib/inffast.c \ 
       src/zlib/inffast.h \ 
       src/zlib/inffixed.h \ 
       src/zlib/inflate.c \ 
       src/zlib/inflate.h \ 
       src/zlib/inftrees.c \ 
       src/zlib/inftrees.h \ 
       src/zlib/trees.c \ 
       src/zlib/trees.h \ 
       src/zlib/uncompr.c \ 
       src/zlib/zconf.h \ 
       src/zlib/zlib.h \ 
       src/zlib/zutil.c \ 
       src/zlib/zutil.h \ 
       src/zvbi/bcd.h \ 
       src/zvbi/bit_slicer.c \ 
       src/zvbi/bit_slicer.h \ 
       src/zvbi/decoder.c \ 
       src/zvbi/macros.h \ 
       src/zvbi/misc.h \ 
       src/zvbi/raw_decoder.c \ 
       src/zvbi/raw_decoder.h \ 
       src/zvbi/sampling_par.c \ 
       src/zvbi/sampling_par.h \ 
       src/zvbi/sliced.h \ 
       src/zvbi/zvbi_decoder.h 

ccextractor_CFLAGS =-std=gnu99 -Wno-write-strings -DGPAC_CONFIG_LINUX -D_FILE_OFFSET_BITS=64 -DVERSION_FILE_PRESENT -DENABLE_OCR 

ccextractor_CPPFLAGS =-I /usr/include/leptonica/ -I /usr/include/tesseract/ -I src/lib_ccx/ -I src/gpacmp4/ -I src/libpng/ -I src/zlib/ -I src/zvbi/ -I src/lib_hash/ -I src/protobuf-c/ -I src/utf8proc/ 

ccextractor_LDADD =-lm -ltesseract -llept 

ccextractor_LDFLAGS=-zmuldefs 

treesrcでdirがある:

. 
├── ccextractor.c 
├── CCExtractorConfig.h.in 
├── ccextractor.o 
├── CMakeLists.txt 
├── gpacmp4 
│   ├── avc_ext.c 
│   ├── avc_ext.o 
│   ├── avilib.c 

│   ├── descriptors.o 
│   ├── drm_sample.c 
│   ├── drm_sample.o 
│   ├── error.c 
│   ├── error.o 
│   ├── gpac 
│   │   ├── avparse.h 
│   │   ├── base_coding.h 
│   │   ├── bitstream.h 
│   │   ├── config_file.h 
│   │   ├── configuration.h 
│   │   ├── constants.h 
│   │   ├── events_constants.h 
│   │   ├── ietf.h 
│   │   ├── internal 
│   │   │   ├── avilib.h 
│   │   │   ├── isomedia_dev.h 
│   │   │   ├── media_dev.h 
│   │   │   ├── odf_dev.h 
│   │   │   ├── odf_parse_common.h 
│   │   │   └── ogg.h 
│   │   ├── isomedia.h 
│   │   ├── list.h 
│   │   ├── math.h 
│   │   ├── media_tools.h 
│   │   ├── mpeg4_odf.h 
│   │   ├── network.h 
│   │   ├── revision.h 
│   │   ├── setup.h 
│   │   ├── sync_layer.h 
│   │   ├── tools.h 
│   │   ├── utf.h 
│   │   └── version.h 
│   ├── gpac_ogg.c 
│   ├── hinting.c 
│   ├── ipmpx_code.c 
│   ├── ipmpx_parse.c 
│   ├── isom_intern.c 
│   ├── isom_read.c 
│   ├── isom_store.c 
│   ├── isom_write.c 
│   ├── list.c 
│   ├── math.c 
│   ├── media.c 
│   ├── media_odf.c 
│   ├── meta.c 
│   ├── movie_fragments.c 
│   ├── mp4.c 
│   ├── odf_code.c 
│   ├── odf_codec.c 
│   ├── odf_command.c 
│   ├── os_config_init.c 
│   ├── os_divers.c 
│   ├── os_file.c 
│   ├── qos.c 
│   ├── ReadMe.txt 
│   ├── sample_descs.c 
│   ├── slc.c 
│   ├── stbl_read.c 
│   ├── stbl_write.c 
│   ├── track.c 
│   ├── tx3g.c 
│   ├── url.c 
│   └── utf.c 
├── lib_ccx 
│   ├── activity.c 
│   ├── activity.h 
│   ├── asf_constants.h 
│   ├── asf_functions.c 
│   ├── avc_functions.c 
│   ├── avc_functions.h 
│   ├── bitstream.h 
│   ├── hamming.h 
│   ├── hardsubx.c 
│   ├── hardsubx_classifier.c 
│   ├── hardsubx_decoder.c 
│   ├── hardsubx.h 
│   ├── hardsubx_imgops.c 
│   ├── hardsubx_utility.c 
│   ├── ts_functions.h 
│   ├── ts_info.c 
│   ├── ts_tables.c 
│   ├── ts_tables_epg.c 
│   ├── utility.c 
│   ├── utility.h 
│   ├── wtv_constants.h 
│   └── wtv_functions.c 
├── lib_hash 
│   ├── README 
│   ├── sha2.c 
│   └── sha2.h 
├── libpng 
│   ├── png.c 
│   ├── pngconf.h 
│   ├── pngdebug.h 
│   ├── pngerror.c 
│   ├── pngget.c 
│   ├── png.h 
│   ├── pnginfo.h 
│   └── pngwutil.c 
├── protobuf-c 
│   ├── protobuf-c.c 
│   └── protobuf-c.h 
├── utf8proc 
│   ├── utf8proc.c 
│   ├── utf8proc_data.c 
│   └── utf8proc.h 
├── win_iconv 
│   ├── iconv.h 
│   └── win_iconv.c 
├── win_spec_incld 
│   ├── dirent.h 
│   ├── inttypes.h 
│   └── stdint.h 
├── zlib 
│   ├── adler32.c 
│   ├── compress.c 
│   ├── crc32.c 
│   ├── crc32.h 
│   ├── trees.c 
│   ├── trees.h 
│   ├── uncompr.c 
│   ├── zconf.h 
│   ├── zlib.h 
│   ├── zutil.c 
│   └── zutil.h 
└── zvbi 
    ├── bcd.h 
    ├── bit_slicer.c 
    ├── bit_slicer.h 
    ├── decoder.c 
    ├── macros.h 
    ├── misc.h 
    ├── raw_decoder.c 
    ├── raw_decoder.h 

そしてまた、すべてはgpacmp4ディレクトリ内のファイルのようなsrcのサブディレクトリ内のフルパスで行われことと、 #include <gpac/avparse.h>。すべて-I flagsが提供されているメインのccextractor.cファイル以外のファイルです。

少しでも助けていただければ幸いです。 makeがちょうど未定義の参照のエラーを表示する前に呼び出されます

gcc -DHAVE_CONFIG_H -I. -I /usr/include/leptonica/ -I /usr/include/tesseract/ -I src/lib_ccx/ -I src/gpacmp4/ -I src/libpng/ -I src/zlib/ -I src/zvbi/ -I src/lib_hash/ -I src/protobuf-c/ -I src/utf8proc/ -std=gnu99 -Wno-write-strings -DGPAC_CONFIG_LINUX -D_FILE_OFFSET_BITS=64 -DVERSION_FILE_PRESENT -DENABLE_OCR -g -O2 -MT src/ccextractor-ccextractor.o -MD -MP -MF src/.deps/ccextractor-ccextractor.Tpo -c -o src/ccextractor-ccextractor.o `test -f 'src/ccextractor.c' || echo './'`src/ccextractor.c 
mv -f src/gpacmp4/.deps/ccextractor-avc_ext.Tpo src/gpacmp4/.deps/ccextractor-avc_ext.Po 
gcc -DHAVE_CONFIG_H -I. -I /usr/include/leptonica/ -I /usr/include/tesseract/ -I src/lib_ccx/ -I src/gpacmp4/ -I src/libpng/ -I src/zlib/ -I src/zvbi/ -I src/lib_hash/ -I src/protobuf-c/ -I src/utf8proc/ -std=gnu99 -Wno-write-strings -DGPAC_CONFIG_LINUX -D_FILE_OFFSET_BITS=64 -DVERSION_FILE_PRESENT -DENABLE_OCR -g -O2 -MT src/gpacmp4/ccextractor-avilib.o -MD -MP -MF src/gpacmp4/.deps/ccextractor-avilib.Tpo -c -o src/gpacmp4/ccextractor-avilib.o `test -f 'src/gpacmp4/avilib.c' || echo './'`src/gpacmp4/avilib.c 
mv -f src/gpacmp4/.deps/ccextractor-avilib.Tpo src/gpacmp4/.deps/ccextractor-avilib.Po 

が声明:

gcc -std=gnu99 -Wno-write-strings -DGPAC_CONFIG_LINUX -D_FILE_OFFSET_BITS=64 -DVERSION_FILE_PRESENT -DENABLE_OCR -g -O2 -zmuldefs -o ccextractor src/ccextractor-ccextractor.o src/gpacmp4/ccextractor-avc_ext.o src/gpacmp4/ccextractor-avilib.o src/gpacmp4/ccextractor-av_parsers.o src/gpacmp4/ccextractor-base_encoding.o src/gpacmp4/ccextractor-bitstream.o src/gpacmp4/ccextractor-box_code_3gpp.o src/gpacmp4/ccextractor-box_code_adobe.o src/gpacmp4/ccextractor-box_code_apple.o src/gpacmp4/ccextractor-box_code_base.o src/gpacmp4/ccextractor-box_code_drm.o src/gpacmp4/ccextractor-box_code_meta.o src/gpacmp4/ccextractor-box_funcs.o src/gpacmp4/ccextractor-configfile.o src/gpacmp4/ccextractor-data_map.o src/gpacmp4/ccextractor-desc_private.o src/gpacmp4/ccextractor-descriptors.o src/gpacmp4/ccextractor-drm_sample.o src/gpacmp4/ccextractor-error.o -lm -ltesseract -llept 

/media/mayank/Mayank/GSOC 2017/Projects/ccextractor/src/ccextractor.c:32: undefined reference to `mprint' 
/media/mayank/Mayank/GSOC 2017/Projects/ccextractor/src/ccextractor.c:33: undefined reference to `change_filename_requested' 
src/ccextractor-ccextractor.o: In function `main': 
/media/mayank/Mayank/GSOC 2017/Projects/ccextractor/src/ccextractor.c:68: undefined reference to `init_options' 
/media/mayank/Mayank/GSOC 2017/Projects/ccextractor/src/ccextractor.c:123: undefined reference to `params_dump' 
src/gpacmp4/ccextractor-drm_sample.o: In function `gf_isom_ipmpx_remove_tool_list': 
/media/mayank/Mayank/GSOC 2017/Projects/ccextractor/src/gpacmp4/drm_sample.c:1421: undefined reference to `gf_odf_desc_del' 
collect2: error: ld returned 1 exit status 
Makefile:497: recipe for target 'ccextractor' failed 
make[1]: *** [ccextractor] Error 1 
make[1]: Leaving directory '/media/mayank/Mayank/GSOC 2017/Projects/ccextractor' 
Makefile:335: recipe for target 'all' failed 
make: *** [all] Error 2 

PS:appreciated.Iを含む多くのことを試しているすべてのヘルプここで

makeが呼び出すいくつかの初期の文ですコード内の#include <path/to/header>ステートメントのパスを変更してから-IステートメントをCPPFLAGSのパスに追加してもそれは役に立ちませんでした。定義されていない参照エラーのほとんどは、src/dir/subdirなどのディレクトリのサブディレクトリにあるヘッダで宣言された関数からのもので、src/dir/までのフラグは-Iまでしか追加されず、src/dir/のファイルは#include<subdir/filename.h>のような文を持ちます。

PPS:grep -r "<Name_of_function_leading_to_error>" .srcに使用して、宣言ヘッダーを確認しました。

答えて

0

未定義の参照は、ライブラリが見つからないか、ライブラリの順序が間違っていることを意味します。つまり、-Iフラグを変更しても効果はありません。

  1. は、ライブラリは、シンボルが含まれているかを検索
  2. チェック彼らは
  3. が欠落している場合、彼らは、彼らがリンケライン上にある場合は、順序が正しいことを確認したリンカーライン上にあり、それらを追加した場合
関連する問題