0

Webports、ffmpeg を構成しました。現在のプロジェクト用に次の Makefile を作成しました。ただし、ffmpeg ライブラリのリンクで問題が発生しました。

$ TOOLCHAIN=pnacl make
  LINK pnacl/Release/client_unstripped.bc
pnacl/Release/src/client.o: error: undefined reference to 'av_register_all'
make: *** [pnacl/Release/client_unstripped.bc] Error 1

ここで何が間違っているのか教えてください。私の Makefile を以下に示します。

VALID_TOOLCHAINS := pnacl glibc clang-newlib 勝利

NACL_SDK_ROOT ?= $(abspath $(CURDIR)/../..)

ターゲット = クライアント

OTHERDIR=src

INC_DIR = 株式会社

FFMPEG_INC_DIR = ../../toolchain/mac_pnacl/le32-nacl/usr/include

INCLUDES = -I$(INC_DIR) -I$(FFMPEG_INC_DIR)

$(NACL_SDK_ROOT)/tools/common.mk を含める

CHROME_ARGS += --allow-nacl-socket-api=localhost

LIBS = nacl_io ppapi_cpp ppapi

CFLAGS = -Wall -g -O2 $(INCLUDES) -L../../toolchain/mac_pnacl/le32-nacl/usr/lib -lavformat \ -lvpx -lvorbisenc -lvorbis -logg -ltheoraenc -ltheoradec -logg -lmp3lame -lm -pthread -lavcodec -lvpx -lvorbisenc -lvorbis -logg \ -ltheoraenc -ltheoradec -logg -lmp3lame -lm -pthread -lswresample -lm -lavutil -lm -lavdevice -lavfilter

ソース = $(OTHERDIR)/tcp_util.cc $(OTHERDIR)/tpool.cc $(OTHERDIR)/net.cc $(OTHERDIR)/rtsp_response.cc \ $(OTHERDIR)/rtsp.cc $(OTHERDIR)/rtsp_common. cc\$(OTHERDIR)/rtsp_client.cc $(OTHERDIR)/udp_util.cc\$(OTHERDIR)/client.cc

# common.mk からマクロによって生成されたルールを構築します。

$(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS))))

# PNaCl ワークフローは、ストリップされていないバイナリとファイナライズ/ストリップされたバイナリの両方を使用します。# NaCl では、(デバッグではなく) リリース構成用に削除されたバイナリのみを生成します。ifneq (,$(or $(findstring pnacl,$(TOOLCHAIN)),$(findstring Release,$(CONFIG)))) $(eval $(call LINK_RULE,$(TARGET)_unstripped,$(SOURCES),$( LIBS),$(DEPS))) $(eval $(call STRIP_RULE,$(TARGET),$(TARGET)_unstripped)) else $(eval $(call LINK_RULE,$(TARGET),$(SOURCES),$( LIBS),$(DEPS))) endif

$(eval $(call NMF_RULE,$(TARGET),))

これが、ライブラリがクラスのコンテキストでどのように使用されたかです。

class VideoDecodePack {
public:
    VideoDecodePack() {
        av_register_all();
    }
};

class ClientInstance : public pp::Instance {
 public:
  explicit ClientInstance(PP_Instance instance) : pp::Instance(instance){
    cses = InitRtspClientSession();
    _videoDecoder = new VideoDecodePack();
  }
...
4

1 に答える 1