windows10下编译32位和64位webrtc(m77)静态库

这篇具有很好参考价值的文章主要介绍了windows10下编译32位和64位webrtc(m77)静态库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. windows10下编译32位和64位webrtc(m77)静态库

省略挂代理下载depot_tools以及webrtc代码的过程。。。
可参考webrtc编译

务必在 cmd 终端环境下进入到 webrtc\src 目录,再执行以下操作!

1.1. 环境配置

  • 在系统环境变量下编辑PATH,将depot_tools所在路径放在PATH变量最前面。
  • 设置环境变量 DEPOT_TOOLS_WIN_TOOLCHAIN=0

1.2. 编译流程

  1. 检出m77版本的webrtc

    git checkout -b m77 remotes/branch-heads/m77
    
    gclient sync -D
    

    m77版本对应详情:

    commit ad73985e75684cb4ac4dadb9d3d86ad0d66612a0 (HEAD -> m77, branch-heads/m77)
    Author: Henrik Boström <hbos@webrtc.org>
    Date:   Wed Aug 21 12:09:51 2019 +0200
    
    Add implemented-but-missing members to RTCMediaStreamTrackStats::Members
    ...
    
  2. 配置编译参数

    gn args out\m77
    

    在弹出的 out\m77\args.gn 文本文件中输入编译参数,或者直接以命令行参数形式携带。

  3. 生成ninja编译脚本,并生成vs2017工程文件

    gn gen out\m77 --ide=vs2017
    
  4. 使用ninja编译,将过程日志记录到文件

    ninja -C out\m77 -d stats >> out\m77\comp.log
    

1.3. 先说遇到的问题

  1. ImportError: No module named win32file

    [236/2777] LIB obj/media/rtc_constants.lib
    FAILED: obj/media/rtc_constants.lib 
    e:/google/depot_tools/bootstrap-2@3_8_10_chromium_23_bin/python/bin/python.exe ../../build/toolchain/win/tool_wrapper.py link-wrapper environment.x64 False lib.exe /nologo /ignore:4221 /OUT:obj/media/rtc_constants.lib @obj/media/rtc_constants.lib.rsp
    Traceback (most recent call last):
    File "../../build/toolchain/win/tool_wrapper.py", line 31, in <module>
        import win32file    # pylint: disable=import-error
    ImportError: No module named win32file
    [237/2777] CXX obj/logging/rtc_stream_config/rtc_stream_config.obj
    

    参考Build issue with M76 version of webrtc on Windows

    使用以下命令

    python -m pip install pywin32
    

    最好保证系统环境变量路径中没有其他版本的python影响。

    然后继续执行编译流程中第4步。

  2. fatal error C1189: #error: "See: bugs.webrtc.

    这个问题在编译参数 is_clang=false 时才会出现

    [1210/2535] CXX obj/modules/video_coding/webrtc_h264/h264_encoder_impl.obj
    FAILED: obj/modules/video_coding/webrtc_h264/h264_encoder_impl.obj 
    ...
    E:\google\webrtc\src\modules/video_coding/codecs/h264/h264_encoder_impl.h(21): fatal error C1189: #error:  "See: bugs.webrtc.org/9213#c13."
    

    注释掉该行之后继续执行编译流程中第4步,发现后续还会出现类似的报错

    E:\google\webrtc\src\modules/video_coding/codecs/h264/h264_color_space.h(20): fatal error C1189: #error:  "See: bugs.webrtc.org/9213#c13."
    
    E:\google\webrtc\src\modules/video_coding/codecs/h264/h264_decoder_impl.h(21): fatal error C1189: #error:  "See: bugs.webrtc.org/9213#c13."
    

    ,所以一次性注释掉三个文件中将会报错的行:See: bugs.webrtc.org/9213#c13.

    • modules/video_coding/codecs/h264/h264_decoder_impl.h(21)
    • modules/video_coding/codecs/h264/h264_encoder_impl.h(21)
    • modules/video_coding/codecs/h264/h264_color_space.h(20)

    然后继续执行编译流程中第4步。

  3. error C2059: 语法错误:“字符串”

    [13/1314] CC obj/third_party/ffmpeg/ffmpeg_internal/pcm.obj
    FAILED: obj/third_party/ffmpeg/ffmpeg_internal/pcm.obj 
    ...
    ../../third_party/ffmpeg/libavcodec/pcm.c(629): error C2059: 语法错误:“字符串”
    

    同样注释掉报错这一行,然后继续执行编译流程中第4步。

  4. 关于应用程序在webrtc.lib链接静态库时报错

    Linker can't find CreatePeerConnectionFactory after M77 update

    修改方法

    148073: Add missing dependencies to the static library

    然后重新生成会增加:create_peerconnection_factory.lib
    同时更新:webrtc.lib

    再次编译后报另外的连接错误:

    1>webrtc.lib(http_common.obj) : error LNK2019: 无法解析的外部符号 _AcquireCredentialsHandleA@36,该符号在函数 "enum rtc::HttpAuthResult... 中被引用
    1>webrtc.lib(http_common.obj) : error LNK2019: 无法解析的外部符号 __imp__FreeCredentialsHandle@4,该符号在函数 "public: virtual __thiscall rtc::`anonymous namespace'::NegotiateAuthContext::~NegotiateAuthContext(void)"... 中被引用
    1>webrtc.lib(http_common.obj) : error LNK2019: 无法解析的外部符号 _InitializeSecurityContextA@48,该符号在函数 "enum rtc::HttpAuthResult... 中被引用
    1>webrtc.lib(http_common.obj) : error LNK2019: 无法解析的外部符号 _CompleteAuthToken@8,该符号在函数 "enum rtc::HttpAuthResult __cdecl rtc::HttpAuthenticate... 中被引用
    1>webrtc.lib(http_common.obj) : error LNK2019: 无法解析的外部符号 __imp__DeleteSecurityContext@4,该符号在函数 "public: virtual __thiscall rtc::`anonymous namespace'::NegotiateAuthContext::~NegotiateAuthContext(void)"... 中被引用
    1>... : fatal error LNK1120: 5 个无法解析的外部命令
    

    解决方法:

    链接依赖库中增加Secur32.lib
    微软的解释:包含了security.h的头文件要加#pragma comment(lib,"Secur32.lib")
    AcquireCredentialsHandleA function (sspi.h)

    在这两个文件中都有对security.h的引用:
    rtc_base/http_common.cc:19:#include <security.h>
    rtc_base/socket_adapters.cc:27:#include <security.h>

  5. 无法解析的外部符号 avpriv_emms_asm

    这个问题在 is_clang=false 编译64位库之后链接webrtc静态库时出现

    虽然生成了webrtc.lib,但在应用程序或者dll在链接webrtc时会报错

    4>  正在创建库 ... 和对象 ...
    4>webrtc.lib(autorename_libavcodec_utils.obj) : error LNK2019: 无法解析的外部符号 avpriv_emms_asm,该符号在函数 avcodec_default_execute 中被引用
    4>webrtc.lib(decode.obj) : error LNK2001: 无法解析的外部符号 avpriv_emms_asm
    4>webrtc.lib(vp3.obj) : error LNK2001: 无法解析的外部符号 avpriv_emms_asm
    4>webrtc.lib(pcm.obj) : error LNK2001: 无法解析的外部符号 avpriv_emms_asm
    4>E:\gitlab\sdk\zkms_client\build-win64\sdk\Debug\zkmsclient.dll : fatal error LNK1120: 1 个无法解析的外部命令
    

    根据网上有限的资料显示,可能是X64不支持大多数汇编指令,webrtc源码的第三方目录ffmpeg里面有汇编代码。用clang编译没这个问题,但是clang编译的库vc不能引用。只能替换ffmpeg源码或者在windows上编译 好ffmpeg,然后将ffmpeg的include和lib文件添加到webrtc项目。

    但是笔者后来使用clang编译的库在vc下仍能正常使用。

参考:

webrtc 支持openh264
在win10上编译webRTC(问题篇)
windows上编译webrtc_m84支持h.264编解码遇到的问题总结
webrtc 4577 version Build error,unresoved symbol avpriv_emms_asm, build with vs2017,x64

1.4. 编译参数

gn args out\m77 命令执行之后弹出的文本文件中就是编译时需要的所有参数,关于全部参数及说明可以使用命令 gn args out\m77 --list 查看。

1.4.1. 32位编译参数示例

# Build arguments go here.
# See "gn args <out_dir> --list" for available build arguments.

is_clang = false
is_debug = true
target_cpu = "x86"

proprietary_codecs = true

rtc_build_examples = false
rtc_build_tools = false

rtc_enable_protobuf = false

rtc_include_internal_audio_device = false
rtc_include_pulse_audio = false
rtc_include_tests = false

rtc_libvpx_build_vp9 = false

rtc_use_gtk = false
rtc_use_h264 = true

treat_warnings_as_errors = false

use_aura = false
use_custom_libcxx = false
use_gold = false
use_lld = false
use_ozone = true
use_rtti = true

若编译32位时也使用clang,则链接webrtc的程序在运行时会崩溃,所以就采用非clang方式编译。

1.4.2. 64位编译参数示例

将上述 is_clang 的值换成 truetarget_cpu 的值换成 "x64"

1.5. 生成目标

如果一切顺利,最终生成一大堆lib文件,实际上我们只需要 webrtc.lib 文件足矣。

展开/折叠 out/m77/obj/api/audio_codecs/builtin_audio_decoder_factory.lib out/m77/obj/api/audio_codecs/builtin_audio_encoder_factory.lib out/m77/obj/api/audio_codecs/g711/audio_decoder_g711.lib out/m77/obj/api/audio_codecs/g711/audio_encoder_g711.lib out/m77/obj/api/audio_codecs/g722/audio_decoder_g722.lib out/m77/obj/api/audio_codecs/g722/audio_encoder_g722.lib out/m77/obj/api/audio_codecs/ilbc/audio_decoder_ilbc.lib out/m77/obj/api/audio_codecs/ilbc/audio_encoder_ilbc.lib out/m77/obj/api/audio_codecs/isac/audio_decoder_isac_float.lib out/m77/obj/api/audio_codecs/isac/audio_encoder_isac_float.lib out/m77/obj/api/audio_codecs/L16/audio_decoder_L16.lib out/m77/obj/api/audio_codecs/L16/audio_encoder_L16.lib out/m77/obj/api/audio_codecs/opus/audio_decoder_multiopus.lib out/m77/obj/api/audio_codecs/opus/audio_decoder_opus.lib out/m77/obj/api/audio_codecs/opus/audio_encoder_opus_config.lib out/m77/obj/api/libjingle_peerconnection_api.lib out/m77/obj/api/transport/goog_cc.lib out/m77/obj/api/transport/network_control.lib out/m77/obj/api/video/builtin_video_bitrate_allocator_factory.lib out/m77/obj/api/video_codecs/builtin_video_decoder_factory.lib out/m77/obj/api/video_codecs/builtin_video_encoder_factory.lib out/m77/obj/api/video_codecs/rtc_software_fallback_wrappers.lib out/m77/obj/api/video_codecs/vp8_temporal_layers_factory.lib out/m77/obj/audio/audio.lib out/m77/obj/audio/utility/audio_frame_operations.lib out/m77/obj/call/call.lib out/m77/obj/common_audio/common_audio.lib out/m77/obj/common_audio/common_audio_sse2.lib out/m77/obj/common_video/common_video.lib out/m77/obj/logging/rtc_event_log_impl_encoder.lib out/m77/obj/media/rtc_audio_video.lib out/m77/obj/media/rtc_constants.lib out/m77/obj/media/rtc_data.lib out/m77/obj/media/rtc_encoder_simulcast_proxy.lib out/m77/obj/media/rtc_internal_video_codecs.lib out/m77/obj/media/rtc_media_base.lib out/m77/obj/media/rtc_simulcast_encoder_adapter.lib out/m77/obj/modules/audio_coding/audio_coding.lib out/m77/obj/modules/audio_coding/audio_coding_opus_common.lib out/m77/obj/modules/audio_coding/audio_encoder_cng.lib out/m77/obj/modules/audio_coding/audio_network_adaptor.lib out/m77/obj/modules/audio_coding/audio_network_adaptor_config.lib out/m77/obj/modules/audio_coding/g711.lib out/m77/obj/modules/audio_coding/g722.lib out/m77/obj/modules/audio_coding/ilbc.lib out/m77/obj/modules/audio_coding/isac.lib out/m77/obj/modules/audio_coding/isac_c.lib out/m77/obj/modules/audio_coding/isac_common.lib out/m77/obj/modules/audio_coding/legacy_encoded_audio_frame.lib out/m77/obj/modules/audio_coding/neteq.lib out/m77/obj/modules/audio_coding/pcm16b.lib out/m77/obj/modules/audio_coding/webrtc_cng.lib out/m77/obj/modules/audio_coding/webrtc_multiopus.lib out/m77/obj/modules/audio_coding/webrtc_opus.lib out/m77/obj/modules/audio_mixer/audio_frame_manipulator.lib out/m77/obj/modules/audio_mixer/audio_mixer_impl.lib out/m77/obj/modules/audio_processing/aec3/aec3.lib out/m77/obj/modules/audio_processing/audio_buffer.lib out/m77/obj/modules/audio_processing/audio_processing.lib out/m77/obj/modules/audio_processing/config.lib out/m77/obj/modules/audio_processing/vad/vad.lib out/m77/obj/modules/bitrate_controller/bitrate_controller.lib out/m77/obj/modules/congestion_controller/congestion_controller.lib out/m77/obj/modules/congestion_controller/goog_cc/goog_cc.lib out/m77/obj/modules/congestion_controller/rtp/transport_feedback.lib out/m77/obj/modules/desktop_capture/desktop_capture_differ_sse2.lib out/m77/obj/modules/desktop_capture/desktop_capture_generic.lib out/m77/obj/modules/desktop_capture/primitives.lib out/m77/obj/modules/pacing/pacing.lib out/m77/obj/modules/remote_bitrate_estimator/remote_bitrate_estimator.lib out/m77/obj/modules/rtp_rtcp/rtp_rtcp.lib out/m77/obj/modules/utility/utility.lib out/m77/obj/modules/video_capture/video_capture_module.lib out/m77/obj/modules/video_coding/encoded_frame.lib out/m77/obj/modules/video_coding/nack_module.lib out/m77/obj/modules/video_coding/packet.lib out/m77/obj/modules/video_coding/video_coding.lib out/m77/obj/modules/video_coding/webrtc_h264.lib out/m77/obj/modules/video_coding/webrtc_multiplex.lib out/m77/obj/modules/video_coding/webrtc_vp8.lib out/m77/obj/modules/video_coding/webrtc_vp8_temporal_layers.lib out/m77/obj/modules/video_coding/webrtc_vp9.lib out/m77/obj/modules/video_coding/webrtc_vp9_helpers.lib out/m77/obj/modules/video_processing/video_processing.lib out/m77/obj/modules/video_processing/video_processing_sse2.lib out/m77/obj/p2p/libstunprober.lib out/m77/obj/p2p/rtc_p2p.lib out/m77/obj/pc/peerconnection.lib out/m77/obj/pc/rtc_pc_base.lib out/m77/obj/rtc_base/experiments/alr_experiment.lib out/m77/obj/rtc_base/experiments/audio_allocation_settings.lib out/m77/obj/rtc_base/experiments/balanced_degradation_settings.lib out/m77/obj/rtc_base/experiments/cpu_speed_experiment.lib out/m77/obj/rtc_base/experiments/field_trial_parser.lib out/m77/obj/rtc_base/experiments/jitter_upper_bound_experiment.lib out/m77/obj/rtc_base/experiments/keyframe_interval_settings_experiment.lib out/m77/obj/rtc_base/experiments/normalize_simulcast_size_experiment.lib out/m77/obj/rtc_base/experiments/quality_scaler_settings.lib out/m77/obj/rtc_base/experiments/quality_scaling_experiment.lib out/m77/obj/rtc_base/experiments/rate_control_settings.lib out/m77/obj/rtc_base/experiments/rtt_mult_experiment.lib out/m77/obj/rtc_base/rtc_base.lib out/m77/obj/rtc_base/rtc_numerics.lib out/m77/obj/rtc_base/weak_ptr.lib out/m77/obj/stats/rtc_stats.lib out/m77/obj/system_wrappers/system_wrappers.lib out/m77/obj/third_party/boringssl/boringssl.lib out/m77/obj/third_party/boringssl/boringssl_asm.lib out/m77/obj/third_party/ffmpeg/ffmpeg_internal.lib out/m77/obj/third_party/ffmpeg/ffmpeg_nasm.lib out/m77/obj/third_party/libjpeg_turbo/libjpeg.lib out/m77/obj/third_party/libjpeg_turbo/simd.lib out/m77/obj/third_party/libjpeg_turbo/simd_asm.lib out/m77/obj/third_party/libsrtp/libsrtp.lib out/m77/obj/third_party/libvpx/libvpx.lib out/m77/obj/third_party/libvpx/libvpx_yasm.lib out/m77/obj/third_party/openh264/openh264_common_yasm.lib out/m77/obj/third_party/openh264/openh264_encoder_yasm.lib out/m77/obj/third_party/openh264/openh264_processing_yasm.lib out/m77/obj/third_party/opus/opus.lib out/m77/obj/third_party/pffft/pffft.lib out/m77/obj/third_party/usrsctp/usrsctp.lib out/m77/obj/third_party/yasm/yasm_utils.lib out/m77/obj/video/video.lib out/m77/obj/webrtc.lib out/m77/win_clang_x64/obj/third_party/libyuv/libyuv_internal.lib

1.6. 提取头文件和库文件

1.6.1. 库文件提取

新建批处理文件 gen-webrtc-lib.bat,键入以下内容。

echo off
 
:: 定义源目录
set sourcePath=E:\google\webrtc\src\out\m77\obj
:: 定义目标路径
set resulePath=E:\google\webrtc\lib
 
xcopy %sourcePath%\*.lib %resulePath%\  /s /c /y /h /r /f

pause

执行批处理文件 gen-webrtc-lib.bat,webrtc的所有编译好的库文件会拷贝到目标路径下。

1.6.2. 头文件提取

新建批处理文件 gen-webrtc-inc.bat,键入以下内容。

echo off

:: 定义源目录
set sourcePath=E:\google\webrtc\src
:: 定义目标路径
set resulePath=E:\google\webrtc\include

robocopy %sourcePath% %resulePath% *.h *.hpp *.hxx ^
  /s /mt /log:robocopy-log.txt /fp /ndl  ^
  /xd ^
  "%sourcePath%\.git" ^
  "%sourcePath%\build" ^
  "%sourcePath%\build_overrides" ^
  "%sourcePath%\buildtools" ^
  "%sourcePath%\data" ^
  "%sourcePath%\examples" ^
  "%sourcePath%\out" ^
  "%sourcePath%\rtc_tools" ^
  "%sourcePath%\resources" ^
  "%sourcePath%\test" ^
  "%sourcePath%\testing" ^
  "%sourcePath%\tools" ^
  "%sourcePath%\tools_webrtc" ^
  "%sourcePath%\third_party\blink" ^
  "%sourcePath%\third_party\depot_tools" ^
  "%sourcePath%\third_party\catapult"

pause

执行批处理文件 gen-webrtc-inc.bat,webrtc的头文件会以源目录结构形式拷贝到目标路径下。

有关robocopy的使用,参考robocopy文章来源地址https://www.toymoban.com/news/detail-436626.html

到了这里,关于windows10下编译32位和64位webrtc(m77)静态库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OPENGL问题】Visual Studio添加第三方库——以32位和64位glut库为例

    这里简单记录 如何在Visual Studio添加第三方库——以32位和64位glut库为例 参考了KingRumn的博文:https://blog.csdn.net/KnownAll/article/details/17758847 GLUT(英文全写:OpenGL Utility Toolkit)是一个处理OpenGL程式的工具库,负责处理和底层操作系统的呼叫以及I/O。我在此之前也一直以为只有3

    2024年02月07日
    浏览(40)
  • 如何在Linux 64位系统下编译32位程序?

    随着计算机的不断发展,64位系统渐渐成为了主流,但是我们在编写程序的时候,仍有时候需要编译出32位程序来兼容旧的系统或者是其他32位程序的库,那么在Linux 64位系统下如何编译32位程序呢? 我们需要了解一些基本的预备知识: 1、交叉编译:是指在一种机器的操作系统

    2024年02月04日
    浏览(50)
  • 问题记录:MFC使用ADO在32位和64位下分别连接ACCESS数据库碰到的问题

    题外话:近期收到个任务,给合作的公司弄一个静态库,库的功能需要加载文件夹中的ACCESS数据库,合作方希望同时有32位的 和 64位的。 进入正题把,首先声明,我的ACCESS数据库文件后缀是.mdb的 在x86下导入msado15.dll,我是这样写的 我按网上说的#import \\\"C:Program FilesCommon Fil

    2024年02月03日
    浏览(37)
  • Linux(Ubantu)交叉编译生成windows(32位,64位)可执行程序和库

    机缘巧合下收到了这个小任务. 先是找了下资料发现过去的都是关于mingw32. 教程的做法: 增加个源 (trusty 是linux发行的版本标识,比如22.04是 jammy 更新源 下载mingw32. 结果发现在源里根本找不到 mingw32 报错 Unable to locate package mingw32 最后发现 ubantu高于15.04的版本 mingw32不可用 ,这也

    2024年01月21日
    浏览(32)
  • 【Python微信机器人】第六七篇: 封装32位和64位Python hook框架实战打印微信日志

    目前的系列目录(后面会根据实际情况变动): 在windows11上编译python 将python注入到其他进程并运行 注入Python并使用ctypes主动调用进程内的函数和读取内存结构体 调用汇编引擎实战发送文本和图片消息(支持32位和64位微信) 允许Python加载运行py脚本且支持热加载 利用汇编和反汇编

    2024年02月04日
    浏览(35)
  • MinGW-w64的安装详细步骤(c/c++的编译器gcc、g++的windows版,win10、win11真实可用)

    MinGW(Minimalist GNU for Windows) 是一个用于 Windows 平台的开发工具集,它提供了一组 GNU 工具和库,可以用于编译和构建本地的 Windows 应用程序。 MinGW 的目标是在 Windows 环境下提供类似于 Unix/Linux 环境下的开发工具,使开发者能够轻松地在 Windows 上编写和编译 C、C++ 等程序。

    2024年02月13日
    浏览(56)
  • gocv Windows10下编译和安装(opencv4.7)

    opencv居然还没有官方的golang版,出乎意料。为了编译安装这玩意,折腾了一下午,记录下: 1、 MinGW-w64 这里的坑是对于只懂一点点的人,容易选错版本: 没仔细看的人很可能会选win32的(我就是),因为下意识认为Windows下选择这个版本!! 2、cmake选择系统对应版本就好 3、

    2024年02月10日
    浏览(35)
  • 【Hadoop实战】Windows环境下编译Hadoop2(2.10.2-R0)

    前提 根据Hadoop源码包解压之后编译帮助文件 BUILDING.txt 中关于windows的要求来准备环境 本机环境 JDK1.8 Windows 10 64位专业版 maven 3.9.2 git 2.41.0 ProtocolBuffer 2.5.0 这个要求要满足不然有报错(Github地址) cmake 2.36.4 Visual Studio 2022 Professional cygwin 安装包 IDEA 2022.2.5 编译方式 使用VS2022的

    2024年02月11日
    浏览(44)
  • CPU的设计原理?CPU有哪几部分组成?CPU为何有32位和64位之分?CPU位数到底和数据总线有关还是和地址总线有关?什么是数据总线?什么是地址总线?

    宁可思一近,莫在思一停。 本文目的在于为想要转硬件方向的程序员解释 CPU 的设计原理及组成,数据总线地址总线与 CPU 位数的关系。 站在程序员的角度学习CPU设计原理 上图总体其实为 SoC 片上系统,但是一直叫被叫成 CPU 叫习惯了,准确来说里面的才是 CPU 。 可以认为一

    2024年02月16日
    浏览(32)
  • ubuntu 20.04 aarch64 平台交叉编译 opencv 静态库

    win10 64 位 VMware Workstation Pro 16 虚拟机 虚拟机安装 ubuntu 20.04 opencv 版本: 来自 github 当前最新 4.7 交叉编译 opencv 生成静态库(.a),用于 嵌入式 aarch64 平台。 参考上一篇 ubuntu 20.04 aarch64 平台交叉编译 opencv 默认会生成 动态库(so),可以通过cmake 配置 -DBUILD_SHARED_LIBS=OFF 关闭动

    2024年02月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包