林宏权
自由职业开发者,Linux爱者,C,C++ ,C#,LUA,GO爱好者Windows,Linux,Mac,IOS,Android平台应用与游戏开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Ubuntu 26.04+ 离线安装 GitLab CE 完整教程(2026 最新版)
本文详细介绍了在Ubuntu系统上安装GitLabCE社区版的完整步骤。主要内容包括:系统要求(推荐4核CPU+8GB内存)、安装依赖包、添加GitLab官方仓库、配置外部访问URL、初始root密码获取方法以及常见服务管理命令。文章还提供了安全建议(HTTPS配置、防火墙设置)和常见问题解决方案,帮助用户快速搭建私有代码托管平台。安装过程无需Docker,通过apt包管理器即可完成,适合个人开发者和中小企业使用。原创 2026-03-08 08:24:44 · 980 阅读 · 0 评论 -
ubuntu终端一键创建git仓库分支并同步远程与本地
该摘要描述了一组Git分支管理脚本,主要用于同步本地和远程分支操作。主要脚本包括:sync_local_to_remote.sh(设置上游分支)、merge_branch.sh(合并分支)、show_wkfly_branch.sh(显示分支)和del_wkfly_branch.sh(删除分支)等。这些脚本实现了分支创建、合并、显示和删除等常见Git操作,通过参数化设计支持特定分支(如WKFly_Consumption)的处理,并包含本地与远程分支的同步功能。原创 2025-10-31 10:14:18 · 153 阅读 · 0 评论 -
QGroundControl工程Android平台一键编译安装并启动
该文档展示了一系列用于构建、部署和调试Android应用WKFurious的Shell脚本。主要包含停止/卸载应用(stop_apk.sh, uninstall_wkfly.sh)、查找主类(find_qgc_main.sh)、启动应用(start_apk.sh)、构建应用(build_wkfly.sh)、部署Qt组件(deployqt_wkfly.sh)、安装应用(install_wkfly.sh)等脚本,以及一个整合所有步骤的一键运行脚本(onekey_run.sh)。其中build_wkfly.sh详原创 2025-09-17 10:44:16 · 138 阅读 · 0 评论 -
ubuntu编译qtpdfium模块供QGroundControl工程用
这篇文章包含两个Android编译脚本:1) qtpdfium项目的构建脚本,使用Qt 5.15.2和NDK 25进行编译安装;2) WKFly项目的构建脚本,使用Qt 5.15.2和NDK 21进行编译。两个脚本都针对arm64-v8a架构,启用了调试模式,并采用多线程编译。qtpdfium脚本先克隆仓库后编译安装,而WKFly脚本先清理旧构建目录再重新编译。原创 2025-09-16 11:55:56 · 183 阅读 · 0 评论 -
ubuntu单机实现10000个连接同时在线测试
本文介绍了一个高性能TCP服务器的实现方案。服务器采用epoll边缘触发模式,支持5000个并发连接,包含连接池管理、非阻塞IO和空闲连接清理功能。实现包含三个部分:1) 客户端模拟器c_5k.sh批量创建5000个连接;2) 监控脚本detail.sh实时统计连接数、文件描述符和内存使用;3) 基于C++的服务器核心,使用epoll事件驱动模型,支持连接复用和自动清理空闲连接。服务器默认监听8080端口,通过连接池管理10000个连接槽位,每60秒清理一次空闲连接。编译使用g++ server.cpp -原创 2025-08-29 10:16:49 · 249 阅读 · 0 评论 -
Linux内核及Busybox编译
摘要:通过执行build_linux_core.sh脚本成功下载并编译Linux内核5.15.12,生成bzImage文件。随后执行build_busybox脚本完成BusyBox 1.37.0的下载和编译,输出显示大量工具链接到busybox主程序,系统提示可能需要设置setuid权限以确保所有功能正常工作。两个编译过程均使用多线程加速(分别使用-j12和-j10参数),并处理了特定编译警告(如use-after-free)。原创 2025-08-28 08:28:39 · 698 阅读 · 0 评论 -
ubuntu25.04编译最新版本qgroundcontrol
这篇文章介绍了编译GStreamer和QGroundControl的完整过程。首先需要安装Python虚拟环境和相关工具(meson、ninja等),然后克隆GStreamer源码进行静态库编译安装。接着需要下载QtCreator17开发环境,克隆QGroundControl源码并打开工程进行编译运行。整个过程涉及多个依赖项的安装和配置,包括创建Python虚拟环境、安装构建工具、设置环境变量等关键步骤。原创 2025-08-27 08:25:35 · 484 阅读 · 0 评论 -
ubuntu 20.04安装和编译gstreamer-1.0
本文提供了GStreamer多媒体框架的安装和编译脚本。安装部分包括通过apt安装GStreamer核心工具、开发库和各种插件包(base/good/bad/ugly等),以及验证命令。编译部分设置Python环境别名,安装构建工具ninja-build和meson,配置路径后克隆GStreamer源码仓库,使用meson进行静态库构建和安装。这些命令为在Linux系统上搭建GStreamer开发环境提供了完整指南。原创 2025-08-25 14:29:20 · 349 阅读 · 0 评论 -
ubuntu使用fstab挂载USB设备(移动硬盘)
本文介绍了磁盘挂载的两种方法:通过修改/etc/fstab文件实现自动挂载,以及使用脚本手动挂载和卸载。fstab配置了三个不同文件系统(NTFS、HFS+、EXT4)的分区挂载参数。手动挂载脚本mount_all_disk.sh会先检查并创建挂载目录,然后执行挂载操作;反挂载脚本umount_all_disk.sh则用于卸载这些分区。两种方法最后都通过ls命令验证挂载/卸载结果。原创 2025-08-22 22:11:03 · 170 阅读 · 0 评论 -
macos使用FFmpeg与SDL解码并播放H.265视频
摘要:这是一个H.265视频解码器的实现方案,包含环境配置、CMake工程设置和核心解码逻辑。通过FFmpeg和SDL2库实现视频解码与播放功能,支持解析H.265的NAL单元类型和切片类型。主要步骤包括:1)安装FFmpeg、SDL2和x265依赖;2)配置CMake工程链接相关库;3)实现解码流程,包括打开视频流、查找解码器、帧解码和渲染;4)通过SDL2创建播放窗口,实时显示解码后的视频帧。代码还包含Exp-Golomb编码解析和帧类型识别功能,支持I/P/B帧处理。原创 2025-08-21 20:17:58 · 3468 阅读 · 0 评论 -
视频流AVPacket指针队列处理
摘要:该代码实现了一个基于链表的视频数据包队列(MyVideoQueue),用于管理AVPacket。队列支持入队(EnQueue)、出队(DeQueue)、判空(Empty)、获取大小(Size)和显示队列内容(Show)等操作。入队时会深拷贝AVPacket对象,出队时同样返回深拷贝的数据包并释放原对象。使用时通过EnQueue添加数据包,DeQueue取出数据包进行解码处理。队列内部使用QueueData结构存储AVPacket指针和下一节点指针,通过front和end指针维护队列首尾。原创 2025-08-18 09:28:59 · 125 阅读 · 0 评论 -
ubuntu 20.04 搭建多用户远程桌面共享及同时在线使用
摘要:本文介绍了在物理机上配置远程桌面访问的完整流程。通过setup_xrdp.sh脚本自动安装xrdp服务,修改配置文件并开放3389端口。同时提供了用户管理脚本:add_rdp_users.sh用于创建带sudo权限的远程用户,del_rdp_users.sh用于删除用户及主目录。还包含批量操作脚本add_rdp_all.sh和del_rdp_all.sh,支持一次性创建/删除多个用户(如dev1-dev5),所有用户密码统一设置为111111。完整方案实现了远程桌面环境的快速部署和用户集中管理。原创 2025-08-15 14:31:17 · 564 阅读 · 0 评论 -
H265裸流解码及内存指针队列使用示例
本文包含两个独立的代码实现:1) HEVC裸流解码程序,使用FFmpeg库实现H.265视频解码功能,包括打开输入文件、查找视频流、初始化解码器、处理帧数据并转换为RGB格式等完整流程;2) 基于指针实现的泛型队列模板类PointerQueue,提供入队、出队、容量检查等标准队列操作,支持最大容量限制和异常处理,包含拷贝控制成员和调试功能。两段代码均配有相应的CMake构建文件,分别依赖FFmpeg库和C++20标准。原创 2025-08-13 03:18:55 · 151 阅读 · 0 评论 -
H.265视频结构分析
本文摘要:H.265/HEVC视频编码中的NAL单元(nalu)解析,包括头结构(2字节)、类型划分(Type=(nalu_header&0x7E)>>1)和关键单元类型对应关系。详细说明了VPS(0x40)、SPS(0x42)、PPS(0x44)、IDR(0x26)、SEI(0x4E)等NAL单元类型的十六进制编码与十进制值转换,以及帧类型(I/P/B)的切片类型标识。同时描述了视频流的典型结构顺序(vps-sps-pps-sei-i-p-b)和NAL单元组成(start_code+n原创 2025-08-12 08:54:19 · 109 阅读 · 0 评论 -
Linux Shell为文件添加BOM并自动转换为unix格式
摘要:本文介绍了两个处理文件格式的实用技巧:1)使用vim命令添加BOM头并验证文件编码,通过hexdump查看文件头信息;2)安装dos2unix工具将Windows格式文件转换为Unix格式。这些方法适用于处理不同操作系统间的文件格式兼容性问题,特别是对Gradle构建脚本等文件的格式转换。原创 2025-08-07 20:25:17 · 221 阅读 · 0 评论 -
ubuntu系统文件夹加密实现密码授权访问
本文介绍了使用encfs加密文件系统的具体操作步骤。首先通过sudo apt-get install encfs命令安装encfs工具,然后创建并挂载加密文件夹,指定加密位置和解密位置的路径。后续操作包括查看加密文件夹信息、重新挂载文件夹、反挂载文件夹(使用encfs -u命令)以及验证加密是否有效。整个过程展示了encfs的基本使用方法,包括文件夹的加密挂载与卸载操作。原创 2025-08-07 11:47:15 · 474 阅读 · 0 评论 -
ubuntu20.04报Could NOT find ZLIB (missing: ZLIB_LIBRARY)错误解决
摘要:编译MAVSDK时出现ZLIB库缺失错误,提示找不到ZLIB_LIBRARY(尽管检测到1.2.12版本)。解决方法是在mavsdk_server的CMakeLists.txt中手动指定ZLIB路径:添加ZLIB_INCLUDE_DIR(包含目录)和ZLIB_LIBRARY(静态库路径),指向具体的include文件夹和libz.a文件。修改后重新编译成功。该问题是由于CMake未能自动定位已安装的ZLIB库所致,通过显式设置路径变量即可解决。原创 2025-08-07 08:28:02 · 467 阅读 · 0 评论 -
Linux将python脚本生成可执行文件
本文介绍了如何将Python GTK4应用打包成可执行文件。首先准备包含GTK4窗口和按钮的Python脚本,使用PyInstaller(通过pip安装)进行打包,命令为"pyinstaller --onefile gtk_hello.py"。脚本演示了创建一个带"Hello World"按钮的窗口,点击可关闭窗口。打包后的可执行文件保留全部GTK4功能,包括窗口设置和事件处理。原创 2025-08-06 14:19:54 · 140 阅读 · 0 评论 -
gnome-boxes源码编译
本文介绍了在Linux系统上编译安装libvirt-glib和GNOME Boxes虚拟机的步骤。首先通过apt安装必要的依赖包,包括meson、libvirt-dev等开发工具。然后使用git克隆libvirt-glib源码,通过meson和ninja工具进行编译安装。接着安装GNOME Boxes所需的额外依赖库。最后下载源码并执行编译脚本b.sh,将程序安装到/usr/local目录下,完成编译后即可启动GNOME Boxes虚拟机管理程序。整个过程涵盖了从依赖安装到源码编译的完整流程。原创 2025-08-05 17:02:56 · 160 阅读 · 0 评论 -
Could not connect to the RDP server via TLS错误解决
摘要:解决Windows远程桌面连接失败问题,出现"ERRCONNECT_TLS_CONNECT_FAILED"错误。首先尝试修改默认设置无效,后通过检查3389端口状态,使用命令启用TCP协议的3389端口(netsh advfirewall设置规则),最终成功连接到RDP服务并实现远程桌面访问。原创 2025-08-04 19:42:43 · 365 阅读 · 0 评论 -
Android工程命令行打包并自动生成签名Apk
Android Gradle打包配置指南:在工程目录下查看Gradle任务,配置签名文件test.jks(含密码和别名)于build.gradle的signingConfigs中,分别设置debug(不混淆)和release(混淆+资源压缩)的构建类型。通过命令行./gradlew assembleDebug/Release进行打包,最后需验证APK签名。原创 2025-08-04 16:59:22 · 621 阅读 · 0 评论 -
Could NOT find LibLZMA(missing:LIBLZMA_LIBRARY LIBLZMA_INCLUDE_DIR LIBLZMA_HAS_AUTO_DECODER LIBLZMA)
编译错误提示找不到LibLZMA库,需修改MAVSDK的CMakeLists.txt文件。解决方案是在Android平台下添加LZMA库路径配置:设置LIBLZMA_INCLUDE_DIR为头文件目录,LIBLZMA_LIBRARY为静态库文件路径。该修改仅针对Android平台生效,通过指定正确的库文件路径可以解决编译时的依赖问题。原创 2025-08-03 10:08:17 · 445 阅读 · 0 评论 -
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable
编译错误提示找不到OpenSSL库,需要在系统变量中设置OpenSSL根目录路径。解决方案根据平台不同而有所差异:对于Android平台,需要手动指定ZLIB、OpenSSL头文件和库文件的具体路径;对于Unix(非Apple)平台,只需设置OpenSSL加密和SSL库文件的路径。开发者需根据实际编译环境,将上述路径替换为本地OpenSSL库的真实安装路径即可解决该编译错误。原创 2025-08-03 10:09:38 · 448 阅读 · 0 评论 -
线性插值数学公式C语言实现
线性插值是一种通过已知两点(x0,y0)和(x1,y1)计算中间点y值的方法,公式为y=y0+(y1-y0)/(x1-x0)*(x-x0)。代码实现时需检查除数是否为0,并警告x超出区间的情况。示例中,输入点(2,4)和(5,10),在x=3处插值结果为6.00。该方法简单高效,适用于数据平滑处理。原创 2025-07-30 16:48:27 · 123 阅读 · 0 评论 -
ubuntu自动搭建Android平台NDK编译环境
该脚本自动下载指定版本的Android NDK工具链并解压,配置交叉编译环境变量。通过设置CROSS_TRIPLE、CROSS_ROOT等关键变量,指定目标架构为aarch64-android,配置编译器(clang/clang++)、汇编器(llvm-as)等工具路径。同时设置NDK版本为25b,目标API级别为23,并指定CMake工具链文件路径。完成这些配置后,开发者即可使用该环境变量集编译适用于Android平台的库文件。整个设置过程自动化程度高,简化了Android跨平台开发的工具链配置工作。原创 2025-07-30 16:23:07 · 288 阅读 · 0 评论 -
libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found与l`CXXABI_1.3.13‘ not found解决
摘要:程序运行时出现错误,检查发现系统缺少GLIBCXX_3.4.29版本库。经查,Ubuntu 20.04系统中最高只支持GLIBCXX_3.4.28。该问题是由于未将GCC11库加入LD_LIBRARY_PATH环境变量所致。需要更新系统库或配置正确的库路径解决兼容性问题。原创 2025-07-30 15:24:55 · 1132 阅读 · 0 评论 -
ubunbu20.04安装MAVSDK开发环境依赖
本文介绍了Linux环境下安装开发工具链的步骤。首先通过apt命令安装基础工具包,包括编译工具和依赖库。然后详细说明了CMake 3.22.1的源码编译安装过程,包括下载、解压、编译和添加到环境变量。可选部分提供了GCC 11.4.0的安装指南,涵盖依赖安装、源码下载、编译配置及环境变量设置。所有安装步骤均包含验证命令,确保工具安装成功并正确配置路径。文中使用了多线程编译(-j $(nproc))以提高效率,并通过修改.bashrc文件持久化环境变量配置。原创 2025-07-30 10:17:39 · 215 阅读 · 0 评论 -
Ubuntu25.04轻量虚拟机Multipass使用Shell脚本自动创建并启动不同版本Ubuntu并复制文件
Multipass快速创建Ubuntu虚拟机指南 本文介绍了使用Multipass快速创建不同版本Ubuntu虚拟机的方法。首先通过snap安装Multipass,然后分别创建18.04、20.04和22.04三个版本的Ubuntu虚拟机实例,每个实例配置为4核CPU、8G内存和120G磁盘空间。同时还提供了在虚拟机内安装基础开发工具的命令,以及查看所有运行实例信息和查看单个实例详细信息的命令。这些操作可以帮助开发者快速搭建基于不同Ubuntu版本的开发测试环境。原创 2025-07-29 17:13:41 · 168 阅读 · 0 评论 -
ubuntu 25.04 自带JS引擎gjs运行GTK with JavaScript 应用
本文展示了GTK4的两种实现方式:JavaScript和C语言。JavaScript版本创建了一个带按钮的窗口,点击按钮会输出信息;C语言版本则创建了一个简单的"Hello GTK4"窗口。文章还提供了GTK4环境安装命令(sudo apt install libgtk-4-dev)、编译方法(使用pkg-config获取GTK4参数)以及主题管理相关命令,包括安装Materia主题、查看当前主题和切换为Adwaita主题等操作。原创 2025-07-29 17:00:50 · 341 阅读 · 0 评论 -
HMAC算法之SHA256哈希C++实现详解
本文详细介绍了HMAC-SHA256算法的实现过程:首先处理密钥(长度超过64字节时进行哈希处理,不足时填充0x00),然后分别构建内部填充(0x36)和外部填充(0x5c),通过XOR运算生成最终填充值。算法核心包含两个哈希计算阶段:先对"内部填充+消息"进行SHA256哈希,再对"外部填充+内部哈希结果"进行二次哈希,最终生成32字节的HMAC值。文中提供了完整的C++实现代码,使用OpenSSL库进行SHA256计算,并包含详细的调试输出展示每个步骤的中间结果。原创 2025-07-24 11:11:50 · 345 阅读 · 0 评论 -
05c6:9091 Qualcomm, Inc on Ubuntu 25.04 not driver how to use adb connect to device
本文介绍了在Linux系统中连接Android设备进行调试的步骤:首先通过lsusb命令确认设备信息(如Qualcomm设备ID 05c6:9091),然后在/etc/udev/rules.d/51-android.rules文件中添加USB设备规则,赋予访问权限并创建符号链接。接着重启adb服务,重新插入设备后通过adb devices确认连接。最后将USB模式切换为TCP/IP,使设备同时出现在USB和网络连接列表中,最终在Android Studio中成功识别设备。整个过程涉及USB权限配置和adb服原创 2025-07-22 09:30:25 · 174 阅读 · 0 评论 -
MAVSDK Android Platform Compier LibLZMA and OpenSSL Library find_packge can‘t found
MAVSDK Android Platform Compier LibLZMA and OpenSSL Library find_packge can't found原创 2025-07-21 15:33:37 · 171 阅读 · 0 评论 -
use shell and ffmpeg convert webm to mp4 and play it
use shell and ffmpeg convert webm to mp4 and play it原创 2025-06-24 23:31:12 · 152 阅读 · 0 评论 -
libusb读取USB接口数据
libusb读取USB接口数据原创 2025-06-05 06:21:10 · 183 阅读 · 0 评论 -
linux使用libusb与Android手机进行AOA通信完整步骤
本文介绍了如何通过libusb库实现Linux系统与Android设备的AOA(Android Open Accessory)通信。主要内容包括:1)安装libusb和udev开发库;2)获取连接设备的VID/PID;3)创建C++工程,实现AOA协议通信的核心代码,包括设备检测、模式切换、端点配置和读写操作;4)使用CMake进行项目构建;5)测试程序运行效果。该方案实现了Android设备与主机的双向通信,当设备进入AOA模式时会自动关联对应的应用程序。原创 2025-06-03 09:15:43 · 289 阅读 · 0 评论 -
EMQX客户端认证与MQTTX客户端使用认证登陆
本文介绍了如何在EMQX中设置客户端认证,并使用MQTTX客户端进行连接测试。首先,在EMQX中创建基于密码的认证方式,使用内置数据库,并设置默认参数(如账号类型为username,加密方式为sha256,加盐方式为suffix)。接着,添加认证用户并生成sha256加密密码。然后,在MQTTX客户端中输入认证用户名和加密密码进行连接,成功发布消息。最后,通过dotnetcore客户端添加连接认证,确保MQTTX能够成功订阅dotnetcore客户端发布的消息。整个过程展示了从认证设置到客户端连接的完整流程原创 2025-05-15 15:33:01 · 1115 阅读 · 0 评论 -
java命令行打包class为jar并运行
5.打包class文件及其依赖为jar文件。执行上面命令成功打包并输出jar文件。编译生成class文件如下。2.添加依赖jackson。4.命令编译class文件。原创 2025-05-10 18:06:08 · 539 阅读 · 0 评论 -
dotnet core c#调用Linux c++导出函数
文章主要介绍了如何在C++中实现Base64编码和解码功能,并通过动态链接库(DLL)导出这些函数,以便在C#中调用。首先,platform_export.h文件定义了跨平台的导出宏,确保在不同操作系统下正确导出函数。接着,cust_bash64.h和cust_bash64.cpp文件实现了Base64编码和解码的核心逻辑,包括Encode、Decode和Decode_CS等函数。这些函数通过LIB_API宏导出,供外部调用。最后,C#代码通过DllImport特性加载C++生成的动态链接库,并调用其中的函原创 2025-05-09 10:27:25 · 305 阅读 · 0 评论 -
移植网狐平台Base64加密算法到Linux完整实现
移植网狐平台Base64加密算法到Linux完整实现原创 2025-05-07 17:30:32 · 284 阅读 · 0 评论 -
JAVA实现UDP/TCP长连接并打印原始数据包内容
JAVA TCP UDP SERVER AND CLIENT原创 2025-04-10 17:21:13 · 310 阅读 · 0 评论
分享