2017-03-14 9 views
1

私はarmとrun peerconnectionの例でwebrtcをコンパイルすることができます。今私はpeerconnectionの例でopencvを使用したいと思います。私はBUILD.ngにクラスを追加し、忍者ビルドを開始しました。次のエラーが出ます。 WebRTC + OpenCVを構築するのを手伝ってください。私はOpenCVもコンパイルしました。クロスコンパイルラズベリーPI用WebRTC + OpenCV

ninja -C out/Default 
ninja: Entering directory `out/Default' 
[1/4] CXX obj/webrtc/examples/peerconnection_client/CustomVideoCapturer.o 
FAILED: obj/webrtc/examples/peerconnection_client/CustomVideoCapturer.o 
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/webrtc/examples/peerconnection_client/CustomVideoCapturer.o.d -DV8_DEPRECATION_WARNINGS -DUSE_UDEV -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD -DENABLE_MEDIA_ROUTER=1 -DFIELDTRIAL_TESTING_ENABLED -DCR_CLANG_REVISION=\"289944-2\" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DCOMPONENT_BUILD -D_DEBUG -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -DWEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE -DEXPAT_RELATIVE_PATH -DHAVE_SCTP -DWEBRTC_ARCH_ARM -DWEBRTC_ARCH_ARM_V7 -DWEBRTC_HAS_NEON -DWEBRTC_POSIX -DWEBRTC_LINUX -DWEBRTC_BUILD_LIBEVENT -I/usr/local/include -I/usr/local/include/opencv -I../.. -Igen -I../../third_party/libyuv/include -I../../build/linux/debian_wheezy_arm-sysroot/usr/include/gtk-2.0 -I../../build/linux/debian_wheezy_arm-sysroot/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I../../build/linux/debian_wheezy_arm-sysroot/usr/include/gio-unix-2.0 -I../../build/linux/debian_wheezy_arm-sysroot/usr/include/cairo -I../../build/linux/debian_wheezy_arm-sysroot/usr/include/pango-1.0 -I../../build/linux/debian_wheezy_arm-sysroot/usr/include/atk-1.0 -I../../build/linux/debian_wheezy_arm-sysroot/usr/include/cairo -I../../build/linux/debian_wheezy_arm-sysroot/usr/include/pixman-1 -I../../build/linux/debian_wheezy_arm-sysroot/usr/include/libpng12 -I../../build/linux/debian_wheezy_arm-sysroot/usr/include/gdk-pixbuf-2.0 -I../../build/linux/debian_wheezy_arm-sysroot/usr/include/libpng12 -I../../build/linux/debian_wheezy_arm-sysroot/usr/include/pango-1.0 -I../../build/linux/debian_wheezy_arm-sysroot/usr/include/freetype2 -I../../build/linux/debian_wheezy_arm-sysroot/usr/include/glib-2.0 -I../../build/linux/debian_wheezy_arm-sysroot/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I../../third_party/jsoncpp/overrides/include -I../../third_party/jsoncpp/source/include -Wstring-conversion -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -funwind-tables -fPIC -pipe -fcolor-diagnostics --target=arm-linux-gnueabihf -march=armv7-a -mfloat-abi=hard -mtune=generic-armv7-a -pthread -mfpu=neon -mthumb -Wall -Werror -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-covered-switch-default -Wno-deprecated-register -Wno-unneeded-internal-declaration -Wno-inconsistent-missing-override -Wno-shift-negative-value -Wno-undefined-var-template -Wno-nonportable-include-path -Wno-address-of-packed-member -Wno-block-capture-autoreleasing -O0 -fno-omit-frame-pointer -g2 --sysroot=../../build/linux/debian_wheezy_arm-sysroot -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wno-strict-overflow -Wimplicit-fallthrough -Wthread-safety -Winconsistent-missing-override -Wundef -Wno-inconsistent-missing-override -fvisibility-inlines-hidden -Wno-undefined-bool-conversion -Wno-tautological-undefined-compare -std=gnu++11 -fno-rtti -fno-exceptions -Wnon-virtual-dtor -Woverloaded-virtual -c ../../webrtc/examples/peerconnection/client/CustomVideoCapturer.cpp -o obj/webrtc/examples/peerconnection_client/CustomVideoCapturer.o 
In file included from ../../webrtc/examples/peerconnection/client/CustomVideoCapturer.cpp:6: 
In file included from /usr/local/include/opencv2/opencv.hpp:56: 
In file included from /usr/local/include/opencv2/calib3d.hpp:49: 
/usr/local/include/opencv2/core/affine.hpp:287:20: error: implicit conversion turns string literal into bool: 'const char [35]' to 'bool' [-Werror,-Wstring-conversion] 
     CV_Assert(!"Input marix can be 3x3, 1x3 or 3x1"); 
        ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
/usr/local/include/opencv2/core/base.hpp:412:33: note: expanded from macro 'CV_Assert' 
#define CV_Assert(expr) if(!!(expr)) ; else cv::error(cv::Error::StsAssert, #expr, CV_Func, __FILE__, __LINE__) 
           ^~~~ 
In file included from ../../webrtc/examples/peerconnection/client/CustomVideoCapturer.cpp:6: 
In file included from /usr/local/include/opencv2/opencv.hpp:62: 
In file included from /usr/local/include/opencv2/flann.hpp:48: 
In file included from /usr/local/include/opencv2/flann/flann_base.hpp:40: 
In file included from /usr/local/include/opencv2/flann/params.h:33: 
/usr/local/include/opencv2/flann/any.h:58:51: error: cannot use typeid with -fno-rtti 
    virtual const std::type_info& type() { return typeid(T); } 
               ^
/usr/local/include/opencv2/flann/any.h:268:31: error: cannot use typeid with -fno-rtti 
     if (policy->type() != typeid(T)) throw anyimpl::bad_any_cast(); 
          ^
/usr/local/include/opencv2/flann/any.h:268:42: error: cannot use 'throw' with exceptions disabled 
     if (policy->type() != typeid(T)) throw anyimpl::bad_any_cast(); 
             ^
/usr/local/include/opencv2/flann/any.h:277:31: error: cannot use typeid with -fno-rtti 
     if (policy->type() != typeid(T)) throw anyimpl::bad_any_cast(); 
          ^
/usr/local/include/opencv2/flann/any.h:277:42: error: cannot use 'throw' with exceptions disabled 
     if (policy->type() != typeid(T)) throw anyimpl::bad_any_cast(); 
             ^
/usr/local/include/opencv2/flann/any.h:285:34: error: cannot use typeid with -fno-rtti 
     return policy->type() == typeid(anyimpl::empty_any); 
           ^
/usr/local/include/opencv2/flann/any.h:305:34: error: cannot use typeid with -fno-rtti 
     return policy->type() == typeid(T); 
           ^
In file included from ../../webrtc/examples/peerconnection/client/CustomVideoCapturer.cpp:6: 
In file included from /usr/local/include/opencv2/opencv.hpp:62: 
In file included from /usr/local/include/opencv2/flann.hpp:48: 
In file included from /usr/local/include/opencv2/flann/flann_base.hpp:40: 
/usr/local/include/opencv2/flann/params.h:78:9: error: cannot use 'throw' with exceptions disabled 
     throw FLANNException(cv::String("Missing parameter '")+name+cv::String("' in the parameters given")); 
     ^
In file included from ../../webrtc/examples/peerconnection/client/CustomVideoCapturer.cpp:6: 
In file included from /usr/local/include/opencv2/opencv.hpp:62: 
In file included from /usr/local/include/opencv2/flann.hpp:48: 
In file included from /usr/local/include/opencv2/flann/flann_base.hpp:41: 
/usr/local/include/opencv2/flann/saving.h:113:9: error: cannot use 'throw' with exceptions disabled 
     throw FLANNException("Invalid index file, cannot read"); 
     ^
/usr/local/include/opencv2/flann/saving.h:117:9: error: cannot use 'throw' with exceptions disabled 
     throw FLANNException("Invalid index file, wrong signature"); 
     ^
/usr/local/include/opencv2/flann/saving.h:151:9: error: cannot use 'throw' with exceptions disabled 
     throw FLANNException("Cannot read from file"); 
     ^
/usr/local/include/opencv2/flann/saving.h:160:9: error: cannot use 'throw' with exceptions disabled 
     throw FLANNException("Cannot read from file"); 
     ^
/usr/local/include/opencv2/flann/saving.h:165:9: error: cannot use 'throw' with exceptions disabled 
     throw FLANNException("Cannot read from file"); 
     ^
/usr/local/include/opencv2/flann/saving.h:176:9: error: cannot use 'throw' with exceptions disabled 
     throw FLANNException("Cannot read from file"); 
     ^
/usr/local/include/opencv2/flann/saving.h:181:9: error: cannot use 'throw' with exceptions disabled 
     throw FLANNException("Cannot read from file"); 
     ^
In file included from ../../webrtc/examples/peerconnection/client/CustomVideoCapturer.cpp:6: 
In file included from /usr/local/include/opencv2/opencv.hpp:62: 
In file included from /usr/local/include/opencv2/flann.hpp:48: 
In file included from /usr/local/include/opencv2/flann/flann_base.hpp:43: 
In file included from /usr/local/include/opencv2/flann/all_indices.h:38: 
/usr/local/include/opencv2/flann/kmeans_index.h:372:13: error: cannot use 'throw' with exceptions disabled 
      throw FLANNException("Unknown algorithm for choosing initial centers."); 
      ^
/usr/local/include/opencv2/flann/kmeans_index.h:435:13: error: cannot use 'throw' with exceptions disabled 
      throw FLANNException("Branching factor must be at least 2"); 
      ^
/usr/local/include/opencv2/flann/kmeans_index.h:536:13: error: cannot use 'throw' with exceptions disabled 
      throw FLANNException("Number of clusters must be at least 1"); 
      ^
fatal error: too many errors emitted, stopping now [-ferror-limit=] 
20 errors generated. 
ninja: build stopped: subcommand failed. 

答えて

1

この問題はWebRTCのデフォルトのコンパイルフラグがopencvのコンパイルを妨げることが原因です。

追加するには、以下のパラメータ、あなたのBuild.GNで

  • 以下の手順に従って、これらの問題を解決するために

    suppressed_configs + = [ "//構築/設定/打ち鳴らす:extra_warnings" ]

    設定は、上記文字列BOOL変換誤差が

    警告になることができ

    suppressed_configs + = [ "//ビルド/設定/コンパイラ:no_rtti"]

    上記の設定は、「できないようにするには

  • を消える "-fno-RTTIとtypeidを使用することはできません" を作ります以下のようなno_exceptions 『:// /設定/ gccのを構築する「

    消え以下の行が

    コメントを提出//WebRTC/build/config/BUILDCONFIG.GNに行くのエラー』例外を無効にして「スロー」を使用します

    default_compiler_configs + = [

    # "// /設定/ gccのビルド:no_exceptions"、

    "// /設定/ gccのビルド:symbol_visibility_hidden"、

    ]

関連する問題