⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1060.html

📁 著名的linux英雄站点的文档打包
💻 HTML
📖 第 1 页 / 共 4 页
字号:
做了一些修改后,可以commit出去:<br>
<br>
cvs commit -m "little change"<br>
上面是一般开发者的登陆方法,对于匿名cvs, 可以让其不需要输入口令即可登陆,但是不能让其commint。这需要:<br>
1. 将要开放的project设为全局可读写,因为cvs服务器在操作时要在相应目录下设置读写琐(即需要创建一些临时文件),所以即使是check out 操作,也需要目录可写。<br>
2. 为了让匿名用户只有check out权限,可以在CVSROOT目录下建立一个readers文件,其中每一行是一个用户,这些用户只具有只读权限。比如:<br>
anonymous<br>
anoncvs<br>
guest<br>
jbrowse<br>
3. 利用passwd文件,使匿名用户不能用其它方式登陆。典型为:<br>
在文件CVSROOT/passwd 中:<br>
anoncvs:XR4EZcEs0szik<br>
在文件/etc/passwd 中为:<br>
anoncvs:!:1729:105:Anonymous CVS User:/home/minigui:/bin/false<br>
CVSROOT/passwd文件是cvs提供的一个专用于存放cvs密码的文件。它的典型格式为:<br>
joe:XR4EZcEs0szik:jane<br>
表示cvs用户joe其实是内部用户jane,其cvs密码加密后被存放在第二个字段,这样就将cvs服务与系统的其它部分分离开来,大大地提高了系统的安全性。<br>
上面介绍的是使用需要严格的安全认证的pserver服务器,如果您在局域网内开发程序,则可以使用rsh或者ssh,设置非常简单,服务器端只要开放着 rsh或ssh服务器,客户端设置两个环境变量:CVS_RSH与CVSROOT,可以将它们的设置写入预处理脚本,比如使用ssh连接:<br>
<br>
$export CVS_RSH="ssh"<br>
$export CVSROOT=":ext:joe@www.minigui.org:/home/minigui"<br>
<br>
$ cvs co miniguiexec03<br>
joe@192.9.200.75's password:<br>
<br>
输入密码,就可以得到一份miniguiexec03的拷贝了。<br>
<br>
<br>
总结<br>
以上只是一个简介,cvs还有很多高级功能,如果您需要更详细的信息,请看cvs 的info或者到gnu上下载html版本的manual。<br>
<br>
第二部分 使用Automake,Autoconf生成Makefile<br>
在Unix上写过程序的人尤其是用 C 来开发程序的人一般都遇到过 Makefile,用 make 来开发和编译程序的确很方便,可是要写出一个Makefile就不那么简单了。GNU Make 那份几百页的文件,让许多人害怕。当然,现在关于make的文档比较多,不过写一个Makefile总是一件很烦人的事情,GNU Autoconf 及 Automake 这两个软件就是帮助程序开发者轻松产生Makefile 文件的。现在的GNU软件如Apache, MySQL Minigui等都是利用Autoconf,Automake实现自动编译的。用户只要使用 “./configure”, “make”, “make install” 就可以把程序安裝到系统中。<br>
<br>
简介<br>
Makefile 基本上就是『目标』(target), 『关联』(dependencies) 和『动作』三者所组成的一系列规则。而 make 就是根据 Makefile 的规则决定如何编译 (compile) 和连接 (link) 程序或者其它动作。当然,make 可做的不只是编译和连接程序,例如 FreeBSD 的 port collection 中,Makefile还可以做到自动下载远程程序,解压缩 (extract) , 打补丁 (patch),设定,然后编译,安装到系统中。<br>
<br>
Makefile 基本结构虽然很简单,但是妥善运用这些规则就可以变换出许多不同的花样。却也因为这样,许多人刚开始学写Makefile 时会觉得没有规范可以遵循,每个人写出来的Makefile都不大一样,不知道从哪里下手,而且常常会受到开发环境的限制,只要环境参数不同或者路径更改,可能 Makefile 就得跟着修改。虽然有GNU Makefile Conventions (GNU Makefile惯例)制订出一些在进行 GNU 程序设计时写 Makefile 的一些标准和规范,但是其内容很长而且很复杂,并且经常作一些调整,为了减轻程序开发人员维护Makefile 的负担,就出现了Automake。<br>
<br>
利用Automake,编程者只需要写一些预先定义好的宏 (macro),提交给Automake处理,就会产生一个可以供 Autoconf 使用的 Makefile.in文件。再配合使用 Autoconf产生的自动配置文件 configure 即可产生一份符合 GNU Makefile 惯例的 Makeifle 了。<br>
<br>
<br>
 <br>
<br>
需要的软件<br>
在开始使用 Automake 之前,首先确认你的系统安装有如下软件:<br>
<br>
1. GNU Automake<br>
2. GNU Autoconf<br>
3. GNU m4<br>
4. perl<br>
5. GNU Libtool (如果你需要产生 shared library)<br>
<br>
最好也使用 GNU C/C++ 编译器 、GNU Make 以及其它 GNU 的工具程序来作为开发的环境,这些工具都是属于 Open Source Software 不但免费而且功能强大。如果你是使用 Red Hat Linux 可以找到所有上述软件的 rpm 文件。 <br>
<br>
一个简单的例子<br>
Automake 所产生的 Makefile 除了可以做到程序的编译和连接,也可以用来生成文档(如 manual page, info 文件等),还可以有把源码文件包装起来以供发布,所以程序源代码所存放的目录结构最好符合GNU 的标准惯例,接下来就用一个hello.c 來做为例子。<br>
<br>
在工作目录下建立一个新的子目录devel,再在 devel 下建立一个"hello"' 的子目录,这个目录将<br>
作为存放 hello这个程序及其相关文件的地方:<br>
<br>
% mkdir devel;cd devel;mkdir hello;cd hello<br>
<br>
用编辑器写一个hello.c文件,<br>
<br>
#include &lt;stdio.h&gt;<br>
int main(int argc, char** argv)<br>
{<br>
printf(“Hello, GNU!n”);<br>
return 0;<br>
}<br>
<br>
接下来就要用 Autoconf 及 Automake 來产生 Makefile 文件了,<br>
<br>
1. 用 autoscan 产生一个 configure.in 的原型,执行autoscan 后会产生一个configure.scan 的文件,可以用它作为 configure.in文件的蓝本。<br>
 <br>
% autoscan<br>
% ls<br>
configure.scan hello.c<br>
<br>
2. 编辑 configure.scan文件,如下所示,並且改名为configure.in<br>
<br>
dnl Process this file with Autoconf to produce a configure script.<br>
AC_INIT(hello.c)<br>
AM_INIT_AUTOMAKE(hello, 1.0)<br>
dnl Checks for programs.<br>
AC_PROG_CC<br>
dnl Checks for libraries.<br>
dnl Checks for header files.<br>
dnl Checks for typedefs, structures, and compiler characteristics.<br>
dnl Checks for library functions.<br>
AC_OUTPUT(Makefile)<br>
<br>
3. 执行 aclocal 和 Autoconf ,分別会产生 aclocal.m4 及 configure 两个文件<br>
<br>
% aclocal<br>
% Autoconf<br>
% ls<br>
aclocal.m4 configure configure.in hello.c<br>
<br>
4. 编辑 Makefile.am 文件,內容如下<br>
<br>
AUTOMAKE_OPTIONS= foreign<br>
bin_PROGRAMS= hello<br>
hello_SOURCES= hello.c<br>
<br>
5. 执行 Automake --add-missing ,Automake 会根据Makefile.am 文件产生一些文件,包含最重要的Makefile.in<br>
<br>
% Automake --add-missing<br>
Automake: configure.in: installing `./install-sh'<br>
Automake: configure.in: installing `./mkinstalldirs'<br>
Automake: configure.in: installing `./missing'<br>
<br>
6. 最后执行 ./configure:<br>
<br>
% ./configure<br>
creating cache ./config.cache<br>
checking for a BSD compatible install... /usr/bin/install -c<br>
checking whether build environment is sane... yes<br>
checking whether make sets ${MAKE}... yes<br>
checking for working aclocal... found<br>
checking for working Autoconf... found<br>
checking for working Automake... found<br>
checking for working autoheader... found<br>
checking for working makeinfo... found<br>
checking for gcc... gcc<br>
checking whether the C compiler (gcc ) works... yes<br>
checking whether the C compiler (gcc ) is a cross-compiler... no<br>
checking whether we are using GNU C... yes<br>
checking whether gcc accepts -g... yes<br>
updating cache ./config.cache<br>
creating ./config.status<br>
creating Makefile<br>
<br>
$ ls<br>
Makefile aclocal.m4 config.status hello.c mkinstalldirs<br>
Makefile.am config.cache configure install-sh<br>
Makefile.in config.log configure.in missing<br>
<br>
現在你的目录下已经产生了一个 Makefile 文件,输入make指令就可以编译 hello.c 了!<br>
<br>
% make<br>
gcc -DPACKAGE="hello" -DVERSION="1.0" -I. -I. -g -O2 -c hello.c<br>
gcc -g -O2 -o hello hello.o<br>
<br>
你还可以试试 “make clean“,”make install“,”make dist“:<br>
[root@localhost hello]# make clean<br>
test -z "hello " || rm -f hello<br>
rm -f *.o core *.core<br>
[root@localhost hello]# make install<br>
gcc -DPACKAGE="hello" -DVERSION="1.0" -I. -I. -g -O2 -c hello.c<br>
gcc -g -O2 -o hello hello.o<br>
make[1]: Entering directory `/home/joe/devel/hello'<br>
/bin/sh ./mkinstalldirs /usr/local/bin<br>
/usr/bin/install -c hello /usr/local/bin/hello<br>
make[1]: Nothing to be done for `install-data-am'.<br>
make[1]: Leaving directory `/home/joe/devel/hello'<br>
[root@localhost hello]# make dist<br>
rm -rf hello-1.0<br>
mkdir hello-1.0<br>
chmod 777 hello-1.0<br>
here=`cd . && pwd`;<br>
top_distdir=`cd hello-1.0 && pwd`;<br>
distdir=`cd hello-1.0 && pwd`;<br>
cd .<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -