Debian开启Apache rewrite MOD

使能Apache加载rewrite MOD [crayon-6844163fd50a4644414078/] 如果有rewrite.load则表明模块已经加载,如果没有的话可以用一下2中方式使能 [crayon-6844163fd50ad828918641/] [crayon-6844163fd50b0963834662/] 使能Apache Override 编辑/etc/apache2/sites-available/default文件 找到 [crayon-6844163fd50b2143272769/] 改为 [crayon-6844163fd50b4946882602/] 重新加载Apache配置 [crayon-6844163fd50b6816045145/] 参考资料 http://tymonn.wordpress.com/2009/07/31/how-to-enable-mod_rewrite-in-apache2-debianubuntu/

GNU链接脚本分析

08年搞了一个可以在linux下使用GNU GCC编译的NXP工程,学到了不少东西。从linux kernel、u-boot借鉴了不少东西,下面对链接文件做一个简单分析。 名词解释 The Location Count(.) - 地址计数器 Load Memory Address(LMA) - 加载内存地址 Virtual Memory Address(VMA) - 虚拟内存地址 section contents - 段内容 Input Section - 输入段 Output Section -…

iptables

玩了5年的linux,没有给服务器加上防火墙,今天google了一下,整了个东西出来 首先看当前的配置,执行下面命令: [crayon-6844163fd598d947328872/] 输出信息类似于: [crayon-6844163fd5993292759317/] 这表明任何人可以从任何地方访问。 保存iptables规则到文件 建立一个测试iptables文件 [crayon-6844163fd5996004651417/] 在这个文件写入一下简单的规则 [crayon-6844163fd5998913191446/] 这个看起来有点复杂,但是每次看一节,你会发现除了我们允许的端口,其他所有端口都被关闭了。 启用这些新的规则 [crayon-6844163fd599a696651636/] 在看看不同 [crayon-6844163fd59a2969811118/] 你也可以保存这些规则到文件 确保在重启后这些iptables规则生效,建立新文件 [crayon-6844163fd59a4960144904/] 增加如下内容 [crayon-6844163fd59a5526716717/] 这个文件需要可执行 [crayon-6844163fd59a7763092324/] 参考 http://wiki.debian.org/iptables http://www.howtoforge.com/linux_iptables_sarge

如何使用g++链接C库

通常我们会用gcc编译动态链接库给用户使用,而用户则可能使用g++。这样就会有一个问题,链接的时候经常找不到函数。如何解决这个问题呢,我们先看以下为什么找不到。 大家知道,c++是支持函数重载。也就是说,相同名字的函数可以在c++中定义多次,只需要返回值或者函数参数不同即可。 我们分别用g++和gcc编译同一个文件看看其生成的二进制文件。 [crayon-6844163fd5bcf829233757/] 使用gcc编译后 [crayon-6844163fd5bd4811076211/] 使用g++编译后 [crayon-6844163fd5bd7933146828/] 很明显。对于同一个源文件,同一个函数,使用不同的编译器下编译出了不同的结果。gcc编译后还是ScardOpen,而g++编译后变成了_Z9SCardOpenv。而函数的实现则是完全一样的。 因为g++是支持函数名重载的。所以单靠函数名是不能区分不同的函数的,随意它在函数名字的前后都加了一些内容。这就是链接使用不同的编译器编译出来的动态链接库无法找到函数的原因。 如何解决呢。因为C++是在C之后出现的。所以C++可以通过一些选项兼容C语言。我们可以在我们提供给用户的头文件里加入extern “C” {} 解决问题 比如: [crayon-6844163fd5bdc201814164/] g++发现有extern “C”包含的东西会以C的方式链接,而定义了__cpluspluc则表示如果使用g++编译则定义extern “C”