<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sstower的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sstower</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sstower]]></copyright><item><title><![CDATA[用linux service自启动ros node]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/162473019</link><guid>https://blog.youkuaiyun.com/sstower/article/details/162473019</guid><author>sstower</author><pubDate>Wed, 01 Jul 2026 08:57:51 +0800</pubDate><description><![CDATA[本文介绍了如何创建和使用systemd服务文件来管理系统服务。主要内容包括：在/etc/systemd/system/目录下创建.service文件的基本方法，使用systemctl命令管理服务（如daemon-reload、enable/disable、start/stop等），以及服务文件的详细配置说明。文章重点解析了service文件中[Unit]、[Service]和[Install]三个配置区块的作用及常用参数，并举例说明了如何配置服务开机自启、设置执行条件和环境变量等。最后还提供了常用的syst]]></description><category></category></item><item><title><![CDATA[linux 设置无线wifi连接]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/160477290</link><guid>https://blog.youkuaiyun.com/sstower/article/details/160477290</guid><author>sstower</author><pubDate>Fri, 24 Apr 2026 15:58:48 +0800</pubDate><description><![CDATA[non_pref_chan=81:5:10:2 81:1:0:2 81:9:0:2  //多频段操作（MBO）非首选频道。p2p_go_max_inactivity=300  //检测STA不活动的超时（以秒为单位）（默认值：300秒）go_venue_group=7  go_venue_type=1  //p2p-go互通：群组场馆信息（可选）mem_only_psk=0        //mem_only_psk：是否仅在内存中保留PSK /密码。]]></description><category></category></item><item><title><![CDATA[boost vs2017 编译]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/146557046</link><guid>https://blog.youkuaiyun.com/sstower/article/details/146557046</guid><author>sstower</author><pubDate>Thu, 27 Mar 2025 14:18:14 +0800</pubDate><description><![CDATA[本人推荐使用stage，因为install生成的这个include目录实际就是boost安装包解压缩后的boost目录（D:\boost\boost_1_70_0，只比include目录多几个非hpp文件，都很小），所以可以直接使用，而且不同的IDE都可以使用同一套头文件，这样既节省编译时间，也节省硬盘空间。编译生成的中间文件的路径。指定编译器，可选的如borland、gcc、msvc（VC6）、msvc-9.0（VS2008）等，VS2019对应msvc-版本我查不到，就是用了14。]]></description><category></category></item><item><title><![CDATA[ros rviz插件编程]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/145323746</link><guid>https://blog.youkuaiyun.com/sstower/article/details/145323746</guid><author>sstower</author><pubDate>Wed, 19 Mar 2025 17:31:41 +0800</pubDate><description><![CDATA[ros rviz插件编程]]></description><category></category></item><item><title><![CDATA[fork 调试]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/141400362</link><guid>https://blog.youkuaiyun.com/sstower/article/details/141400362</guid><author>sstower</author><pubDate>Wed, 21 Aug 2024 18:26:21 +0800</pubDate><description><![CDATA[在一部分系统中(我使用的是基于2.6内核的CentOS，支持follow-fork和detach-on-fork模式)，比如HP-UX11.x之后的版本，Linux2.5.60之后的版本，可以使用以下的方法来达到方便的进行多进程调试功能。当然，你可以使用时间延迟的方法，在子进程fork出来之后，使用Sleep函数等待一段时间再运行，在这段时间中你使用ps找到该进程，然后使用Attach方法把该进程附加到gdb中，从而达到可以调试子进程的目的。gdb只跟踪父进程，不跟踪子进程，这是默认的模式。]]></description><category></category></item><item><title><![CDATA[gdb 通过函数名查看地址和通过地址查看函数名]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/141019473</link><guid>https://blog.youkuaiyun.com/sstower/article/details/141019473</guid><author>sstower</author><pubDate>Thu, 08 Aug 2024 10:12:19 +0800</pubDate><description><![CDATA[如果需要在gdb中能查看宏定义，gcc编译的时候需要加上 -gdwarf-2 和 -g3 两个编译选项。]]></description><category></category></item><item><title><![CDATA[uci 移植]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/140962977</link><guid>https://blog.youkuaiyun.com/sstower/article/details/140962977</guid><author>sstower</author><pubDate>Tue, 06 Aug 2024 18:35:57 +0800</pubDate><description><![CDATA[另外他要依赖于ubox,所以先要移植ubox,下载ubox: libubox-2021-05-16-b14c4688。把它解压到某一个目录下，假设是/disk/libubox-2021-05-16-b14c4688。libubox 编译完成最后在install目录下生成头文件和库文件。这里注意要在cmakelist.txt 指定ubox的头文件路径。他依赖于json-c，可以参看上章如何移植的。另外在命令行指定libubox 库路径。只要这两步做到了，应该不会出问题的。]]></description><category></category></item><item><title><![CDATA[json-c mips 移植]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/140950154</link><guid>https://blog.youkuaiyun.com/sstower/article/details/140950154</guid><author>sstower</author><pubDate>Tue, 06 Aug 2024 11:02:47 +0800</pubDate><description><![CDATA[1.下载 源码 json-c-json-c-0.13-20171207.zip。5.解压json-c-json-c-0.13-20171207.zip。4. 执行命令 source setupevn.sh。6.然后进入到解压后的json-c 文件夹。2. 解压交叉编译工具比如到/disk2。]]></description><category></category></item><item><title><![CDATA[linux 内核打印log太多咋办？]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/140215905</link><guid>https://blog.youkuaiyun.com/sstower/article/details/140215905</guid><author>sstower</author><pubDate>Fri, 05 Jul 2024 18:34:59 +0800</pubDate><description><![CDATA[7 4 1 7” 分别对应console_loglevel、default_message_loglevel、minimum_console_loglevel、default_console_loglevel，意味着只有优先级高于KERN_DEBUG(7)的打印消息才能输出到终端。有时候发现，linux 内核打印太多消息了，对有用消息造成了干扰，如果你一个个源文件去关闭打印太麻烦了，有没有一种更方便的方式来关闭这些消息呢？如果想屏蔽掉所有的内核printk打印，那么只需要把第一个数值调到最小值1或者0。]]></description><category></category></item><item><title><![CDATA[openwrt igmp 适配]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/139995973</link><guid>https://blog.youkuaiyun.com/sstower/article/details/139995973</guid><author>sstower</author><pubDate>Wed, 26 Jun 2024 19:15:18 +0800</pubDate><description><![CDATA[openwrt 的igmpproxy 包是干嘛的？原来，组播包并不能穿透路由，也就是我们在wan端播放的组播视频流，lan端是没法收到的，igmpproxy就是用来打通wan端到lan端的数据通道。然后编译并打包，生成的镜像烧入板子，一般来说这个时候igmpproxy 已经能正常工作了。把文中的 192.168.1.0/24 换成0.0.0.0/0，这样所有情况都适合。这样就进入了调试模式，它可以把所有调试信息打印出来，方便我们排查问题。每弄完一次，过不多久就忘了，这次决心记下来。]]></description><category></category></item><item><title><![CDATA[这篇文章让你彻底了解如何使用tcpdump 抓包]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/139350984</link><guid>https://blog.youkuaiyun.com/sstower/article/details/139350984</guid><author>sstower</author><pubDate>Fri, 31 May 2024 14:04:11 +0800</pubDate><description><![CDATA[tcpdump 使用
]]></description><category></category></item><item><title><![CDATA[如何用virtualbox 来跑openwrt 镜像？]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/138540668</link><guid>https://blog.youkuaiyun.com/sstower/article/details/138540668</guid><author>sstower</author><pubDate>Tue, 07 May 2024 18:28:36 +0800</pubDate><description><![CDATA[virtualbox 运行openwrt]]></description><category></category></item><item><title><![CDATA[openwrt开发如何用dumpcore来查找段错误]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/137516529</link><guid>https://blog.youkuaiyun.com/sstower/article/details/137516529</guid><author>sstower</author><pubDate>Mon, 08 Apr 2024 18:28:19 +0800</pubDate><description><![CDATA[core dump 又叫核心转储,是一个程序运行时的环境一个集合包，包含崩溃时的堆栈信息，是一个二进制文件，无法使用记事本打开，一般会在指定目录下生成一个core文件。默认情况下系统生成的core dump文件不带其他拓展名，全部命名为core。通过配置文件来指定core的命名格式：/proc/sys/kernel/core_pattern。core dump文件的生成和大小限制。指定core dump文件的名称格式。core dump文件的参数说明。%t core dump 的时间。]]></description><category></category></item><item><title><![CDATA[如何用自己的代码来更改linux的登录密码]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/137345073</link><guid>https://blog.youkuaiyun.com/sstower/article/details/137345073</guid><author>sstower</author><pubDate>Wed, 03 Apr 2024 14:40:17 +0800</pubDate><description><![CDATA[修改linux 登录密码！]]></description><category></category></item><item><title><![CDATA[ubuntu 16.04 安装 新版npm]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/137344530</link><guid>https://blog.youkuaiyun.com/sstower/article/details/137344530</guid><author>sstower</author><pubDate>Wed, 03 Apr 2024 14:33:02 +0800</pubDate><description><![CDATA[npm install -g npm 更新新版本会失败，哪怎么装新版本呢？在linux下，大部分情况下不能直接解压tar.xz的文件。注：把NODE_HOME的内容换成nodejs的安装路径即可。将 xxx.tar.xz解压成 xxx.tar 然后，再用。确实可以装，但是版本太旧，我的项目一编译就会报错，而且用。输出版本号：v8.11.4。使用指令使环境变量生效。输出版本号：5.6.0。]]></description><category></category></item><item><title><![CDATA[fork 进程的调试方法]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/135158027</link><guid>https://blog.youkuaiyun.com/sstower/article/details/135158027</guid><author>sstower</author><pubDate>Fri, 22 Dec 2023 17:24:49 +0800</pubDate><description><![CDATA[在一部分系统中(我使用的是基于2.6内核的CentOS，支持follow-fork和detach-on-fork模式)，比如HP-UX11.x之后的版本，Linux2.5.60之后的版本，可以使用以下的方法来达到方便的进行多进程调试功能。当然，你可以使用时间延迟的方法，在子进程fork出来之后，使用Sleep函数等待一段时间再运行，在这段时间中你使用ps找到该进程，然后使用Attach方法把该进程附加到gdb中，从而达到可以调试子进程的目的。gdb只跟踪父进程，不跟踪子进程，这是默认的模式。]]></description><category></category></item><item><title><![CDATA[各种添加路由的方法]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/134040738</link><guid>https://blog.youkuaiyun.com/sstower/article/details/134040738</guid><author>sstower</author><pubDate>Wed, 25 Oct 2023 18:08:32 +0800</pubDate><description><![CDATA[各种添加路由的方法]]></description><category></category></item><item><title><![CDATA[gcc 源码分析-从一个最简单的程序说起2]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/107783745</link><guid>https://blog.youkuaiyun.com/sstower/article/details/107783745</guid><author>sstower</author><pubDate>Wed, 19 Aug 2020 11:48:07 +0800</pubDate><description><![CDATA[接下来作语法分析，

其中涉及到的语法规则：
1. fndef: typed_declspecs setspecs declarator
 { if (! start_function ($1, $3)) ...
 2. declarator:
 after_type_declarator
| notype_declarator
 ;
 3. notype_declarator:
notype_declar...]]></description><category></category></item><item><title><![CDATA[gcc 源码分析-从一个最简单的程序说起1]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/8679252</link><guid>https://blog.youkuaiyun.com/sstower/article/details/8679252</guid><author>sstower</author><pubDate>Tue, 04 Aug 2020 12:12:20 +0800</pubDate><description><![CDATA[本节将以一个简单的函数来分析gcc 的执行过程，这个函数没有函数体，但是有传入的参数。
例子如下：
int main(int a,int b)
 {
 
 
 }
其中涉及到的语法规则：
1. fndef: typed_declspecs setspecs declarator 
 { if (!]]></description><category></category></item><item><title><![CDATA[apache 如何记录请求头，响应头和请求体]]></title><link>https://blog.youkuaiyun.com/sstower/article/details/107715578</link><guid>https://blog.youkuaiyun.com/sstower/article/details/107715578</guid><author>sstower</author><pubDate>Fri, 31 Jul 2020 17:16:00 +0800</pubDate><description><![CDATA[开发过程中，有时候往往需要知道浏览器和web服务器具体交互的数据，但是apache默认安装只记录url的数据，有没有什么办法来记录请求头，响应头和请求体的数据呢？

其实在apache中，有两种方法来实现此需求：1. mod_dumpio 模块; 2. mod_security2模块。

1. mod_dumpio

这种方式相对简单，因为apache自身就带了该mod,我们自需要打开它就可以了。

在httpd.conf 中，去掉：

#LoadModule dumpio_module modules/m]]></description><category></category></item></channel></rss>