开始移植 工作后的第一步就是在目标平台Linux上进行编译,并链接源代码。由于需要移植的软件通常并未在Linux平台上编译过,编译的过程可能会遇到很大的困 难。一般情况下,由类型声明引起的编译错误是比较容易修复的。比如Microsoft C/C++的头文件使用__declspec( dllimport/dllexport )来输入和输出DLL函数,在Linux上,把函数声明成extern “C”,或者再结合使用DEF文件,使用相应的链接命令就可以解决这些问题。但困难的地方在于编译器之间存在差异的部分,同时这也是可能引起很多运行时问 题的重要因素,读者有必要在开始移植之前就充分了解。本节不能概括所有差别,只讲述一些容易被忽略而且后果比较严重的方面。
以Visual C++ 2003和GCC 4.1.0为例。前者是Windows平台的主流编译器,兼容性良好,但是对C++标准的遵循并不严格。这意味着即使开发者写出不太符合标准的程序,编译 器也可能能容忍。相反的是,GCC对标准的遵循相对严格得多,这样很容易造成在Windows运行良好的程序,在Linux上却引起意想不到的编译甚至运 行时错误。
(1)基本类型大小和结构对齐
首先是 C/C++语言基本类型的大小,以及相应的结构对齐问题。典型的例子是long关键字。在 ......
本土参考文章:《剖析Linux系统启动过程》
附录:剖析Linux系统启动过程
本文以RedHat9.0和i386平台为例,剖析了从用户打开电源直到屏幕出现命令行提示符的整个Linux启动过程。并且介绍了启动中涉及到的各种文件。
阅读Linux源代码,无疑是深入学习Linux的最好方法。在本文对Linux启动过程的介绍中,我们也尝试从源代码的视角来更深入的剖析Linux 的启动过程,所以其中也简单涉及到部分相关的Linux源代码,Linux启动这部分的源码主要使用的是C语言,也涉及到了少量的汇编。而启动过程中也执行了大量的shell(主要是bash shell)所写脚本。为了方便读者阅读,笔者将整个Linux启动过程分成以下几个部分逐一介绍,大家可以参考下图:
当用户打开PC的电源,BIOS开机自检,按BIOS中设置的启动设备(通常是硬盘)启动,接着启动设备上安装的引导程序lilo或grub开始引导 Linux, Linux首先进行内核的引导,接下来执行init程序,init程序调用了rc.sysinit和rc等程序,rc.sysinit和rc当完成系统初始化和运行服务的任务后,返回init;init启动了mingetty后,打开了终端供用户登录系统,用户登录成功后进入了Shell,这样就完成了从开机到登 ......
在.bash_profile中添加
############################################
##tnsname.ora
############################################
export TNS_ADMIN=$HOME/.database
export SQLPATH=$TNS_ADMIN
创建 .database隐藏文件夹
在其下建立tasname.ora
在该文件中添加
tns01=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.1)(PORT=1521))(CONNECT_DATA=(SID=orcl)(SERVER=DEDICATED)))
然后在用户目录下执行那个
source .bash_profile
对于 c shell
setenv TNS_ADMIN ${HOME}/.database
setenv SQLPATH ${TNS_ADMIN}
基本类型
......
概述
在目前以IPv4为支撑的网络协议上搭建的网络环境中,SYN Flood是一种非常危险而常见的DoS攻击方式。到目前为止,能够有效防范SYN Flood攻击的手段并不多,而SYN Cookie就是其中最著名的一种。SYN Cookie原理由D. J. Bernstain和 Eric Schenk发明。在很多操作系统上都有各种各样的实现。其中包括Linux。本文就分别介绍一下SYN Flood攻击和SYN Cookie的原理,更重要的是介绍Linux内核中实现SYN Cookie的方式。最后,本文给出一种增强目前Linux中SYN Cookie功能的想法。
一 SYN Flood攻击
SYN Flood攻击是一种典型的拒绝服务型(Denial of Service)攻击。所谓拒绝服务型攻击就是通过进行攻击,使受害主机或网络不能够良好的提供服务,从而间接达到攻击的目的。
SYN Flood攻击利用的是IPv4中TCP协议的三次握手(Three-Way Handshake)过程进行的攻击。大家知道协议规定,如果一端想向另一端发起TCP连接,它需要首先发送TCP SYN 包到对方,对方收到后发送一个TCP SYN+ACK包回来,发起方再发送TCP ACK包回去,这样三次握手就结束了。我们把TCP连接的发起方叫作"TCP客户机(TCP Client)",TCP连接的接收方叫作"TCP服务器(TCP Server)"。值得注意的是在TCP服务器收到TCP S ......
JDK
进入安装目录
#cd /home
#cp jdk-1_5_0_02-linux-i586.rpm /usr/local
#cd /usr/local
给所有用户添加可执行的权限
#chmod +x jdk-1_5_0_02-linux-i586.rpm.bin
#./jdk-1_5_0_02-linux-i586.rpm.bin
此时会生成文件jdk-1_5_0_02-linux-i586.rpm,同样给所有用户添加可执行的权限
#chmod +x jdk-1_5_0_02-linux-i586.rpm
安装程序
#rpm -ivh jdk-1_5_0_02-linux-i586.rpm
出现安装协议等,按接受即可。
2.设置环境变量。
#vi /etc/profile
在最后面加入
#set java environment
JAVA_HOME=/usr/java/jdk-1_5_0_02
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存退出。
要使JDK在所有的用户中使用,可以这样:
vi /etc/profile.d/java.sh
在新的java.sh中输入以下内容:
#set java environment
JAVA_HOME=/usr/java/jdk-1_5_0_02
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存退出,然后给java.sh分配权限:chmod 755 /etc/profile.d/java.sh ......
1. 关于本文
本文将以MySQL 5.0.51为例,以CentOS 5为平台,讲述MySQL数据库的安装和设置。
2. 关于MySQL
MySQL是最流行的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家由MySQL开发人员创建的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。
MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。
MySQL的官方发音是“My Ess Que Ell”,而不是“My sequel”。但是你也可以使用“My sequel”和其他的方言。
MySQL网站(http://www.mysql.com)提供了关于MySQL和MySQL AB的最新的消息。
MySQL具有如下特点或特性:
MySQL是一个数据库管理系统;
MySQL是一个关系数据库管理系统;
MySQL是开源的;
MySQL服务器是一个快的、可靠的和易于使用的数据库服务器;
MySQL服务器工作在客户/服务器或嵌入系统中;
有大量的MySQL软件可以使用。
3. MySQL的安装
MySQL有两种安装方式:源码包安装和二进制包安装。这两种方式各有特色: ......
1. 关于本文
本文将以MySQL 5.0.51为例,以CentOS 5为平台,讲述MySQL数据库的安装和设置。
2. 关于MySQL
MySQL是最流行的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家由MySQL开发人员创建的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。
MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。
MySQL的官方发音是“My Ess Que Ell”,而不是“My sequel”。但是你也可以使用“My sequel”和其他的方言。
MySQL网站(http://www.mysql.com)提供了关于MySQL和MySQL AB的最新的消息。
MySQL具有如下特点或特性:
MySQL是一个数据库管理系统;
MySQL是一个关系数据库管理系统;
MySQL是开源的;
MySQL服务器是一个快的、可靠的和易于使用的数据库服务器;
MySQL服务器工作在客户/服务器或嵌入系统中;
有大量的MySQL软件可以使用。
3. MySQL的安装
MySQL有两种安装方式:源码包安装和二进制包安装。这两种方式各有特色: ......