|
发表于 2003-6-18 00:37:13
|
显示全部楼层
FAQ:
6.2.
如何编译一个软件包?
下面是一个比较顺利的例子:
tar xvjf foo-0.0.tar.bz2
cd foo-0.0
./configure --prefix=/usr
make
make install
cd ..
rm -rf foo-0.0
在最后删除源码是很重要的。这个源码只是在重新安装而又不想再编译时才有用,因为"make clean"和朋友都不可靠。下面是"./configure" 或 "make" 时出错的例子.
唯一不删除源码的是 Linux 内核。许多人都保存着内核的源码树,这样在做了一点小改动后不用从头开始编译内核。如果要做的是比较大的改动,比如改变CPU类型,可能还是要删除并重解压内核的源码。
下面是configure时出错的例子:
tar xvjf foo-0.0.tar.bz2
cd foo-0.0
./configure --prefix=/usr
.
.
.
*** configure: error: foo requires libess 4.2 or greater
please install libess and rerun configure.
cd ..
rm -rf foo-0.0
tar xvjf libess-4.2.tar.bz2
cd libess-4.2
./configure --prefix=/usr
make
make install
cd ..
rm -rf libess-4.2
tar xvjf foo-0.0.tar.bz2
cd foo-0.0
./configure --prefix=/usr
make
make install
cd ..
rm -rf foo-0.0
Ed. 注意: 上面的libess属于libiberty (在glibc中, 据我所知) 和 libofat. 问题出在gcc编译时使用的参数-l上。例如,
gcc -o foo foo.c -lm
将把"m" (数学math) 库连接到程序foo上. 所以,对上面的库而言,如下命令:
gcc -o foo foo.c -liberty -lowfat -less
这是虚假的连接点。例子出于 The Hitchhiker's Guide to the Galaxy, 作者 Douglas Adams.
6.3.
我在安装好了系统以后还要留着源码么?
不用,但是看一下 "我该如何编译一个软件包?" 以了解详细情况和一个例外. |
|