标签

 编译 

相关的文章:

这是一个关于编译的文章合集,包括嵌入式Qt交叉编译FFmpeg与视频播放测试、WebRTC在Mac M1等系列芯片上的编译和开发、C++程序编译的步骤等内容。如果你对编译感兴趣,这里有很多有用的信息。

嵌入式Qt-交叉编译FFmpeg与视频播放测试

原文约4200字,阅读约需10分钟。发表于:

要在Linux设备上利用Qt界面播放视频,一个可行的解决方案是利用FFmpeg库来完成视频的解码与播放任务。这一节将首先介绍如何进行FFmpeg库的交叉编译,以便把FFmpeg库移植到Linux设备上。

本文介绍了在Linux设备上利用Qt界面播放视频的准备工作,包括交叉编译FFmpeg库并移植到Linux设备上,编译和配置FFmpeg和x264库,以及通过ffmpeg指令测试视频播放效果。

相关推荐 去reddit讨论

嵌入式Qt-交叉编译FFmpeg与视频播放测试

原文约4200字,阅读约需10分钟。发表于:

想要在Linux开发板上使用Qt界面播放视频,一种选择是利用FFmpeg库来实现视频的解码和播放。本文将首先介绍如何对FFmpeg库进行交叉编译,以便将其移植到Linux开发板上。

本文介绍了在Linux开发板上使用Qt界面播放视频的准备工作,包括交叉编译FFmpeg库并移植到Linux开发板上,以及通过ffmpeg指令测试视频播放效果。

相关推荐 去reddit讨论

【WebRTC 专栏】-- 在 Mac M1 等系列芯片编译和开发 WebRTC-Android 库

原文约300字,阅读约需1分钟。发表于:

众所周知,编译 WebRTC-Android 库是需要在 Linux 系统上的,这是由于源码里编译脚本限制导致。 当然也可以在 Mac 平台上进行编译,不过就需要对源码进行魔改了,毕竟拉取的是 Linux 下的源码和相关配置,要把这些配置替换成 Mac 平台上的,比如 Linux 下的 C++ 编译配置、Android NDK 配置等,这种方式侵入性比较大,而且还相当折腾,费时费力。 Docker 容器配置 有一种更好的方式就是使用 Docker 。 在 Docker 上配置 Linux 环境,然后拉取 WebRTC 源码进行编译,再把编译好的产物(库文件)拉取到本地即可。 在 Mac 上使用 Docker 直接下载安装就行了,但创建 Linux 容器时要注意对应的芯片平台。 现在大多数 Mac 应该都是苹果自研的 ARM64 架构的 Apple 芯片,不再是英特尔平台的芯片了。 在 Apple 芯片上直接通过 docker 命令创建容器的话,可能还是 arm64 架构的,这样即使拉取了 WebRTC 源码,在编译库的时候还是会提示不支持 arm64 架构,导致编译失败,这也是实际踩过坑后的经验教训。 需要借助 Docker 的 --privileged=true 选项(特权模式)来指定平台。 使用如下命令来创建容器: 1docker run --privileged -ti --rm --platform linux/amd64 ubuntu:18.04 SHELL 并且通过该命令来查看对应的镜像是什么平台: 1> docker inspect f9a80a55| grep Architecture 2 3"Architecture": "amd64", SHELL f9a80a55 是镜像的 id ,输出是 amd64 的架构。如果没有 --privileged 参数,输出就是 arm64 了。 WebRTC 源码编译 有了镜像之后,接下来就是常规操作,下载 depot tools 并拉取对应源码 。 1fetch --nohooks --no-history webrtc_android 2# 同步下依赖 3gclient sync SHELL 再执行如下命令拉取相关的依赖: 1# 安装WebRTC基础的依赖 2./build/install-build-deps.sh SHELL 通过如下命令编译对应架构的 libwebrtc.aar 文件: 1./tools_webrtc/android/build_aar.py --build-dir Build --arch arm64-v8a SHELL 编译后的 libwebrtc.aar 文件在 src 目录下,在 Build 目录下有对应的编译产物,此时的 aar 还是 Release 版本的。 要编译 Debug 版本的,找到 src/build/toolchain/android/BUILD.gn 文件,修改如下配置: 1# 注释掉下面两行配置,即可实现 unstrip 2# strip = rebase_path("//buildtools/third_party/eu-strip/bin/eu-strip", 3# root_build_dir) 4# use_unstripped_as_runtime_outputs = android_unstripped_runtime_outputs SHELL 编码命令也对应调整: 1./tools_webrtc/android/build_aar.py --build-dir=Build --arch arm64-v8a --extra-gn-args "is_debug=true symbol_level=2 android_full_debug=true" SHELL 这时编译出的 libjingle_peerconnection_so.so 就有几百 M 了,带了 Debug 信息。 这时候通过 docker cp 命令将 libwebrtc.aar 文件拉取到本地就可以用来开发了。 1docker cp {container-id}:path/src/libwebrtc.aa ~/} SHELL VSCode 远程开发 可以编译出 libwebrtc.aar 之后,只需要每次改动代码然后编译一次就行了,但是在 Docker 镜像里面用 Vim 来写代码太不方便。 有一种办法是将镜像里的代码同步到本地,然后本地修改了再同步到镜像中,来回倒腾效率也很低,而且还占存储空间。 有更好的办法是使用 VSCode 的远程开发,通过 VSCode 链接到 Docker 容器,直接访问容器中的磁盘目录内容,在 VSCode 中进行可视化的开发,这样效率就提升很多了,并且还能搭配 VSCode 的各种插件来辅助开发。 具体的操作在 VSCode 中下载对应的 Docker 和 Dev Containers 这两个插件。 然后在左侧红框中就能看到目前有的容器,在右侧红框中选择要关联的容器,之后在选择要开发的目录,找到 webrtc 下载的源码目录就行,效果如下: 这样一来,就可以在 VSCode 中远程开发 WebRTC 代码,而 Docker 容器只用来编译对应的 libwebrtc.aar 库就行了。 前往网页以阅读全文。

本文介绍了在Mac平台上使用Docker编译WebRTC-Android库的方法,并通过配置Linux环境和拉取WebRTC源码进行编译,将编译好的库文件拉取到本地。同时还介绍了使用VSCode的远程开发来提高开发效率的方法。

【WebRTC 专栏】-- 在 Mac M1 等系列芯片编译和开发 WebRTC-Android 库
相关推荐 去reddit讨论

C++程序编译之谜——简单还是复杂?编译到底有哪些步骤?

原文约1800字,阅读约需5分钟。发表于:

通常我们用IDE写完一个程序后,点击编译按钮的时候,内部到底发生了什么?为什么会生成一个可执行文件?这个过程到底有哪些步骤呢?是很简单还是很复杂呢?这篇文章,我们把这些事情讲清楚。 首先要明确一点,编

本文介绍了编译的整个过程,包括预处理、编译、汇编和链接。了解每个过程可以更好地理解编译的流程。

相关推荐 去reddit讨论

rust 如何使用自定义 gcc 编译静态库呢

原文英文,约100词,阅读约需1分钟。发表于:

我想使用自定义 gcc 编译程序并生成静态库 我通过创建一个 target 来使用自定义的 gcc,但是编译会报错 这是错误信息 error: data-layout for target `test-15916131297364407962`, `e-m:e-p:32:32-n32-S32`, differs from LLVM target's `riscv32-none-elf-gcc` default layout, `e-m:e-p:32:32-i64:64-n32-S128` target json 文件如下 { "arch": "riscv32", "cpu": "generic-rv32", "crt-objects-fallback": "false", "data-layout": "e-m:e-p:32:32-n32-S32", "eh-frame-header": false, "emit-debug-gdb-scripts": false, "features": "+m,+a,+c", "linker": "C:\\Program Files (x86)\\RV32-Toolchain\\RV32-V2\\bin\\riscv32-elf-gcc.exe", "linker-flavor": "gcc", "llvm-target": "riscv32-none-elf-gcc", "max-atomic-width": 0, "panic-strategy": "abort", "relocation-model": "static", "target-pointer-width": "32", "pre-link-args": { "gcc": [ "-Wall -march=rv32imacxbs1 -ffunction-sections -fdata-sections -msave-restore -mjump-tables-in-text", "-Os" ] } }

该文章讨论了使用自定义gcc编译程序并生成静态库时遇到的问题。作者创建了一个目标来使用自定义的gcc,但是编译时出现错误。错误信息显示目标的数据布局与LLVM目标的默认布局不同。作者提供了目标的JSON文件,其中包含了一些配置信息。

相关推荐 去reddit讨论

x-cmd pkg | python – 一种结合了解释性、编译性、互动性和面向对象的脚本语言

原文约200字,阅读约需1分钟。发表于:

Python 是一种广泛使用的动态类型编程语言,以其可读性、多样性的编程范式支持以及全面的标准库而闻名;它由吉多·范罗苏姆(Guido van Rossum)于20世纪80年代末创建

Python是一种广泛使用的动态类型编程语言,以其可读性、多样性的编程范式支持以及全面的标准库而闻名。它简单易学,标准库功能广泛,解释型语言,有大量的库和框架,以及强大的社区支持。文章还介绍了不同Python解析器的区别,以及Python的技术特点。

相关推荐 去reddit讨论

如何把编译时间加入到目标文件?

原文英文,约400词,阅读约需2分钟。发表于:

但是人为操作总会出现纰漏,希望只要代码被重新编译过,那么bin文件就包含新的时间信息,而这个信息是可以从外部通信或printf来查看的。

本文介绍了如何在嵌入式开发中保证发布的bin文件是最终测试通过的版本。通过在代码中加入日期和时间宏,可以获取工程编译的时间。为了保证时间每次编译都更新,可以使用预编译指令修改文件的时间或链接文件,触发编译器重新编译。另外,还可以直接告诉编译器每次重新编译某个文件。以上方法都能实现目标。

相关推荐 去reddit讨论

如何在Linux系统中进行软件开发和编译?

原文约200字,阅读约需1分钟。发表于:

本文于 2024年4月3日 11:32 更新,注意查看最新内容 在Linux系统中进行软件开发和编译是一个涉及 […] 如何在Linux系统中进行软件开发和编译?最先出现在龙鲲博客。

本文介绍了在Linux系统中进行软件开发和编译的步骤,包括安装Linux发行版、设置开发环境、编写代码、编译和构建、调试、版本控制、依赖管理和文档。Linux提供了强大的开发工具和灵活的环境,适用于各种软件开发需求。

如何在Linux系统中进行软件开发和编译?
相关推荐 去reddit讨论

windows下nginx-rtmp-module的编译方法

原文英文,约600词,阅读约需2分钟。发表于:

Building Nginx With Rtmp Module On Windows

本文介绍了在Windows 11下编译带有rtmp模块的nginx的步骤,包括下载nginx源码和依赖源码,修改配置参数生成makefile,使用Visual Studio编译nginx,并检查是否成功添加了rtmp模块。

windows下nginx-rtmp-module的编译方法
相关推荐 去reddit讨论

.NET9极致性能CLR操控MSIL(分层编译)

原文约200字,阅读约需1分钟。发表于:

点击上方蓝字 江湖评谈设为关注前言.NET8/9的性能之所以优秀,分层编译的功能功不可没。这需要MSIL的一些特性支撑,进入CLR的第一步就是加载MSIL,因为其独特的加载模式,比较晦涩,本篇看下。分层特性分层编译信息观察,需要解决一些特有问题。即如果在Debug模式下,是完全无法获取到分层信息,所以需要设置程序集特性来开启分层信息(参考:.NET普通方法开启分层编译),即设置以下特性[assem...

本文介绍了.NET 8/9的分层编译功能,包括设置程序集特性、条件和原理,以及如何进入分层编译队列。同时讲解了CLR加载时如何识别DebuggableAttribute的设置。

相关推荐 去reddit讨论