<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[FRcheng的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/FRcheng</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; FRcheng]]></copyright><item><title><![CDATA[x86_64 centos7.2 上用aarch64-linux-gnu-gcc4.8.5交叉编译qt5.11.3]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/152413224</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/152413224</guid><author>FRcheng</author><pubDate>Thu, 02 Oct 2025 15:57:22 +0800</pubDate><description><![CDATA[本文介绍了Qt5.11.3在x64主机上交叉编译aarch64版本的配置过程。关键点包括：1) 设置PKG_CONFIG相关环境变量指向目标系统的库文件；2) 使用-sysroot指定aarch64系统的根目录；3) 通过-skip参数跳过不必要的Qt模块；4) 配置openssl为运行时动态加载；5) 处理xcb库依赖问题。文章特别强调了extprefix参数的重要性，用于指定交叉编译后的安装位置。整个配置过程需解决pkg-config查找路径和库依赖等问题，最终生成适用于aarch64架构的Qt库。]]></description><category></category></item><item><title><![CDATA[centos6.5 老旧系统编译glib-2.58.3.tar.bz2]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/148607467</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/148607467</guid><author>FRcheng</author><pubDate>Thu, 12 Jun 2025 12:32:28 +0800</pubDate><description><![CDATA[util-linux-2.20.1.tar.bz2 util-linux-2.23.2.tar.xz libmount版本低了，编译glib符号。util-linux-2.27.tar.xz 最终ok，只要libmount，libmount依赖libblkid。python3我用的 python3.13.tar.gz，安装meson用python3 编译产生的pip3,最后用meson构建glib，meson会自动从git下载libffi，自动下载失败，手动clone到构建目录。配置python编译。]]></description><category></category></item><item><title><![CDATA[自己构建的交叉编译器找不到PATH_MAX]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/146400245</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/146400245</guid><author>FRcheng</author><pubDate>Thu, 20 Mar 2025 18:08:22 +0800</pubDate><description><![CDATA[进入到交叉gcc的include目录查找PATH_MAX，发现是在linux/limits.h这个头文件定义的，这是内核头文件，同时我在用我的交叉gcc编译protobuf时，查看报错PATH_MAX找不到的文件，protobuf提示包含#include <limits.h>是为了提供PATH_MAX。这个新的gcc编译使用了PATH_MAX宏的代码还是会找不到。尝试对比能用的和不能用的incude-fixed/limits.h,差别不大，前后包了一层宏定义，替换一下能用的这个头，他妈的果然行了。]]></description><category></category></item><item><title><![CDATA[linux 添加自定义文件类型，自定义文件图标，自定义类型默认打开应用 启动菜单]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/142912953</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/142912953</guid><author>FRcheng</author><pubDate>Thu, 20 Mar 2025 12:39:25 +0800</pubDate><description><![CDATA[xdg-icon-resource install --size 16 --mode system --context mimetypes xxx.png mime类型里面的icon名称。/usr/share/mime/packages/xxx.xml 定义mime类型，mime-database数据库配置。/usr/share/applications/mimeapps.list mime与默认打开程序的关系。/usr/share/icons/ 图标文件。强制更新icons资源。]]></description><category></category></item><item><title><![CDATA[gcc编译方式]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/146392954</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/146392954</guid><author>FRcheng</author><pubDate>Thu, 20 Mar 2025 12:22:14 +0800</pubDate><description><![CDATA[a机器上的编译器得是个交叉编译器，才能构建出在b上跑的编译器，b上跑的编译器也是一个交叉编译器，才能回过头产生a上跑的代码。a机器上的编译器得是个交叉编译器，才能构建出在b上跑的编译器，b上跑的编译器也是一个交叉编译器，产生的代码才能再c上跑，a机器上的编译器得是个交叉编译器，才能构建出在b上跑的编译器，b上跑的编译器实际是一个本地编译器。cpu架构-厂商-系统  如x86_64-pc-linux-gnu。在a机器造一个编译器，在a上跑，给b机器生成代码。在a机器造一个编译器，在b上跑，给a机器生成代码。]]></description><category></category></item><item><title><![CDATA[centos6.10 编译gcc11.5.0 支持mutilib（32bit，64bit）glibc2.11.3]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/146345051</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/146345051</guid><author>FRcheng</author><pubDate>Tue, 18 Mar 2025 16:39:59 +0800</pubDate><description><![CDATA[64位glibc的的头文件和32位glibc的基本一样，区别是include/gnu/stubs-32.h include/gnu/stubs-64.h,其他的头64位生成的有包含对32位的条件编译宏，可以兼容32位。就知道怎么配置glibc的32位和64位的安装目录了，下次编glibc就知道怎么设置--prefix 还有关键的lib目录和include的目录的安装位置了，第一次编放错了只能手动copy到对应位置了，这里glibc的安装目录，编译gcc的时候识别不到，gcc只能找几个固定位置的glibc。]]></description><category></category></item><item><title><![CDATA[centos6.10 编译gcc11.5 x64到aarch64交叉工具链 ]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/146344474</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/146344474</guid><author>FRcheng</author><pubDate>Tue, 18 Mar 2025 16:18:32 +0800</pubDate><description><![CDATA[上面（--with-sysroot的值） + （--with-native-system-header-dir的值）是include查找目录编译能成功，但是libc.so脚本内容路径要改。上面configure会报错，应为configure太老，识别不了gcc11.5 需要修改configure文件检查cc版本的代码，case语句里面加上   |11.*）#--with-native-system-header-dir必须绝对路径默认/usr/include，--with-sysroot内部有效。]]></description><category></category></item><item><title><![CDATA[tesseract源码编译]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/145490328</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/145490328</guid><author>FRcheng</author><pubDate>Fri, 07 Feb 2025 11:25:01 +0800</pubDate><description><![CDATA[编译tesseract]]></description><category></category></item><item><title><![CDATA[linux c国际化]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/143021754</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/143021754</guid><author>FRcheng</author><pubDate>Fri, 18 Oct 2024 12:13:05 +0800</pubDate><description><![CDATA[一种locale表示一种文化的各种数据的表示或显示方式，一种locale分成多个部分，不同的部分由category表示，每一种category下面定义了很多关键字keyword

locale -a 查看所有支持的locale，

locale 不带参查看当前locale的各个category

locale -ck LC_TIME 输出LC_TIME这个category下面的所有keyword

改变category的locale，在输出这个category下面的所有keyword，会发现locale不]]></description><category></category></item><item><title><![CDATA[vscode c/c++自定义设置]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/140765298</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/140765298</guid><author>FRcheng</author><pubDate>Mon, 29 Jul 2024 10:52:59 +0800</pubDate><description><![CDATA[vscode c/c++自定义设置]]></description><category></category></item><item><title><![CDATA[c_cpp_properties.json 参考]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/140764991</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/140764991</guid><author>FRcheng</author><pubDate>Mon, 29 Jul 2024 10:33:15 +0800</pubDate><description><![CDATA[vscode c/cpp 配置文件c_cpp_properties.json参考]]></description><category></category></item><item><title><![CDATA[vscode C/C++ IntelliSense]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/140764200</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/140764200</guid><author>FRcheng</author><pubDate>Mon, 29 Jul 2024 10:16:31 +0800</pubDate><description><![CDATA[vscode c/c++智能提示 配置]]></description><category></category></item><item><title><![CDATA[c++11 abi 兼容性]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/139993949</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/139993949</guid><author>FRcheng</author><pubDate>Wed, 26 Jun 2024 17:39:21 +0800</pubDate><description><![CDATA[ABI（Application Binary Interface）定义了程序二进制接口，包括函数调用约定、参数传递方式、数据结构布局、库函数名称修饰等。ABI 的一致性对于确保编译的二进制文件能够正确链接和运行至关重要。]]></description><category></category></item><item><title><![CDATA[fatal error: bits/c++config.h: 没有那个文件或目录]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/139751382</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/139751382</guid><author>FRcheng</author><pubDate>Mon, 17 Jun 2024 18:29:55 +0800</pubDate><description><![CDATA[/usr/include/c++/8/cstdlib:41:10: fatal error: bits/c++config.h: 没有那个文件或目录
 #include 
]]></description><category></category></item><item><title><![CDATA[mysql 8.0.31 rr隔离级别下的加锁规则总结]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/129770603</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/129770603</guid><author>FRcheng</author><pubDate>Sat, 25 Mar 2023 18:46:34 +0800</pubDate><description><![CDATA[原则1：加锁的基本单位是next-key lock。希望你还记得，next-key lock是前开后闭区间。原则2：查找过程中访问到的对象才会加锁。优化1：索引上的等值查询，给唯一索引加锁的时候，next-key lock退化为行锁。优化2：索引上的等值查询，向右遍历时且最后一个值不满足等值条件的时候，next-key lock退化为间隙锁。一个bug：唯一索引上的范围查询会访问到不满足条件的第一个值为止。查看锁查performance_schema.data_locks表。]]></description><category></category></item><item><title><![CDATA[go sync.Map原理]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/126959698</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/126959698</guid><author>FRcheng</author><pubDate>Fri, 17 Mar 2023 18:02:56 +0800</pubDate><description><![CDATA[无论是read还是dirty，本质上都是map[interface{}]*entry类型，这里的entry其实就是Map的value的容器。通过这种设计，规避了原生map无法并发安全delete的问题，同时在变更某个键所对应的值的时候，就也可以使用原子操作了。使用了两个原生的map作为存储介质，分别是read map（只读map）和dirty map（脏map）。entry的本质，是一层封装，可以表示具体值的指针，也可以表示key已删除的状态（即逻辑假删除）那sync.Map是怎么做的高性能的呢？]]></description><category></category></item><item><title><![CDATA[HTTP2相关rfc]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/129167902</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/129167902</guid><author>FRcheng</author><pubDate>Wed, 22 Feb 2023 19:13:45 +0800</pubDate><description><![CDATA[http2协议文档]]></description><category></category></item><item><title><![CDATA[protobuf和grpc-go代码生成]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/129146601</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/129146601</guid><author>FRcheng</author><pubDate>Tue, 21 Feb 2023 17:40:19 +0800</pubDate><description><![CDATA[protobuf代码生成，grpc代码生成，protoc命令使用]]></description><category></category></item><item><title><![CDATA[go install命令]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/129127167</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/129127167</guid><author>FRcheng</author><pubDate>Mon, 20 Feb 2023 17:07:22 +0800</pubDate><description><![CDATA[go install命令用法详解]]></description><category></category></item><item><title><![CDATA[go list 命令]]></title><link>https://blog.youkuaiyun.com/FRcheng/article/details/129065257</link><guid>https://blog.youkuaiyun.com/FRcheng/article/details/129065257</guid><author>FRcheng</author><pubDate>Thu, 16 Feb 2023 17:16:13 +0800</pubDate><description><![CDATA[go list命令的使用]]></description><category></category></item></channel></rss>