Linux下的软件开发
1、如何升级、编译内核?
如果你不想改变内核的版本,直接转到以下第四步。
1)在任何一个子目录下(但通常是在/usr/src/下)untar解开新的内核源程序:
tar xvfz linux-x.x.xx.tar.gz (例如linux-2.0.35.tar.gz)
或者是打补丁(patch): gzip -cd patch-2.0.35.gz | patch -p0
打完补丁直接跳到第四步
2)rm /usr/src/linux 这通常是一个符号连接。
3)在 /usr/src/ 下建立一个符号连接到你的新内核目录。
ln -s /usr/src/linux.2.x.xx /usr/src/linux
老版本的内核可能还要做一下工作:
cd /usr/include
rm -rf asm linux scsi
ln -s /usr/src/linux/include/asm-i386 asm
ln -s /usr/src/linux/include/linux linux
ln -s /usr/src/linux/include/scsi scsi
4)将当前目录变成 /usr/src/linux
cd /usr/src/linux
5)变成超级用户 su
6)配置内核
如果你在X window下并且希望有图形界面,就用: make xconfig
(注: 需要安装Tk/Tcl包并且X Server的分辨率在800x600以上)
如果你不在X Window下或不想使用图形界面,就用:
make config 或 make menuconfig(推荐),逐个回答完问题后稍等片刻,等提示符出现或图形界面消失,就配置好了系统。
7)生成新内核,用:
make dep ; make clean
make zImage (或用make bzImage进一步压缩内核)
(注意有大小写区分)
还有make zlilo/make install等可选择。
8)如果你用了模块,你还需要生成和安装模块
make modules
make modules-install
depmod -a
9)检查/etc/lilo.conf,把用的那个目录、那个文件作为 image。例如:image = /boot/vmlinuz (slackware版是/vmlinuz)
将 /usr/src/linux/System.map 复制到 /boot 目录中,
将 /usr/src/linux/arch/i386/boot/zImage 复制到 /boot 目录中并改名为 vmlinuz
用一个新文件名将新内核拷贝到相应的目录下,如
cp /usr/src/linux/arch/i386/boot/zImage /boot/zImage2
然后编辑/etc/lilo.conf文件,把原内核有关的那一段复制一份,如
image = /boot/vmlinuz
root = /dev/hda1
label = linux
复制后把image改成/boot/zImage2 把label改成newlinux.
这样新内核与旧内核可以共存,当新内核不能启动时,还有备份在那儿。注意复制后放置的位置,如果没有设置default,则谁是第一项谁就是缺省启动项。
10)安装新内核并重新起动。
lilo
shutdown -r now
(提示:开机启动LILO、出现"LILO:"提示时,按TAB键显示所有可启动的项(由label定义)
2、Linux下除了EMACS,有那些写程序用的编辑软件?
字符方式下有wpe(Window programming environment),非常类似于Borland C++3.1 for DOS。在X Windows下有xwpe,如果用RedHat,CDROM上该有这个东西,还有code-crusader也可以试试,joe,jed/xjed,nedit,kde带的kedit,kbuilder带的ksrcedit等可供参考。其中xjed, ksrcedit是彩色文本编辑,joe/jstar的热键与turbo c基本相同。还可以到166.111.68.98下载C-forge,SourceNavigator,SN是商业软件。
3、介绍一下Linux中shell提供的叙述语言?
在DOS下,我们可以把一长串命令写进.BAT文件中,以便自动执行一连串动作,Linux中可以由在profile或.profile中设定alias来完成,当.BAT太过复杂时,可用shell提供的叙述语言(Scripting language)来写:它强大而易用,可以使用变量,有while,for,case if.. then .. else,的语法结构;还可以作为程序设计语言的替代品。
要撰写一个script,就像在DOS下写.BAT一样,只要编写一个ASCII的文件,内含你想要的指令,然后保存。系统内定的编辑器叫作vi,使用不太方便,也可以使用其它的编辑器如joe或是X下的emacs。以下是vi常用操作法:
1)加入一段文字到文章中:按下‘ i ';
2)离开 vi 但不储存文章:按ESC,再键q!
3)离开且保存:按ESC,再键wq
以下是一些shell script范例:
EXAMPLE 1: first_script
#!/bin/sh
# I am a comment
# don't change the first line - it's got to be there
echo "Today is `date`"
echo "My name is "$0
echo "You gave me the following "$#" parameters: "$*
echo "First parameter is "$1
echo "Have you grasped the trick?"
EXAMPLE 2: 2exe
#!/bin/sh
echo "making "$1" executable... "
chmod u+x $1
EXAMPLE 3: backup
#!/bin/sh
echo "Copying files in ~/bak... "
for name in $*
do
cp ${name} ~/bak
done
使用这个命令:$ chgmod u+x 来执行script,在要执行时,键入它的文件名即可。
4、哪里有Linux下C语言库函数手册?
用xman命令看第三章
5、Linux有没有数据库管理软件?(例如象informix那样)
Linux有好几个DBMS,其中Ingres可能最接近INFORMIX,但是需要自己进行编译,另外它的维护和进一步开发好象不太活跃。目前看来postgreSQL比较好,Redhat-5.0带这个DBMS和它的开发系统。mSQL和MySQL也不错。Informix和Sybase的for Linux版本已出来了,可去他们的站点看看。
OPEN LINK :http://www.openlinksw.com/ (提供大量的ODBC JDBC,收费的)
postodbc :http://logical.thought.net/postodbc/ 这个免费的;
PERL :http://www.perl.com/
PHP :http://www.php.net/ 成熟的数据库接口提供商 perl.module
6、如何调试CGI脚本?
对于一些简单的perl-cgi,可把要求输入的变量都在程序中预定好,然后su nobody运行调试,运行结果正确了,再把预定的变量去掉,放入http服务器,一般即可。
7、Linux下有MOTIF编程的软件包吗?
MOTIF由于不是免费的、运行速度慢,不推荐使用,现在有KDE。如果真想开发MOTIF界面,最好采用TCL/TK来进行,这样可大大节省开发时间、而且开发出来的程序运行效率也好。只需用TCL、也可以用PERL语言编写脚本,然后利用TK工具包进行粘接。无论是TCL还是PERL,它们都有与C/C++程序协同工作的能力。这样,对速度要求高的程序部分用C/C++编写,然后嵌入到TCL或者PERL脚本中。