1

gcc 4.4.4 c89 Fedora 13

我想知道什么更好。为您提供示例编译: apa​​che运行时可移植log4c

我的 fedora 存储库中的 apr 版本是 1.3.9。apr 网站上最新的稳定版本是 1.4.2。

问题

  1. 是从官网下载安装好,还是用yum安装好?
  2. 当您从 yum 安装时,有时它可以将东西放在许多目录中。从 tarball 安装时,您可以将包含和库放在您想要的位置。
  3. log4c 的版本是一样的,因为这是一个老项目。
  4. 我使用 yum 下载了 log4c。我将所有包含和库复制到我的开发项目目录中。

IE

project_name/tools/log4c/inc
project_name/tools/log4c/libs

但是,我注意到我必须在/usr/include目录中查找一些标题。

非常感谢您的任何建议,

4

4 回答 4

4

如果您的发行版包存储库中的版本足够新,请使用它。

优点是通过您的发行版自动更新、轻松快速的安装(包括自动获取和安装依赖项!)以及轻松删除软件包。

如果你自己从 .tar.gz 安装东西,你必须玩自己的发行版——跟踪安全问题和错误。

使用分发包,您也可以关注安全问题,但是分发包为您做了很多工作(例如开发补丁、重新打包、测试和捕获严重的东西)。当然,每个分销商都有一个政策,如何为不同的包存储库处理不同类别的问题。但是对于您自己的 .tar.gz 安装,您将一无所有。

于 2010-08-28T12:16:02.327 回答
2

我认为这是一个古老的问题。在所有 Linux 发行版上都是一样的。

这个包是由某人创建的——那个人对东西应该去哪里有自己的看法。你可能不同意——但是通过使用一个包,你可以省去编译和安装软件所需的所有依赖项。

所以要完全控制:自己动手 - 但要为可能的工作做好准备,否则请使用该软件包。

我的观点:使用包直到不可能这样做(冲突,需要编译参数,..)。我宁愿花时间让软件为我工作,也不愿花时间编译。

于 2010-08-28T12:20:28.087 回答
1

如果你想构建一些必须与 Fedora 中包含的 Apache 一起工作的东西,那么最好使用aprFedora 中的版本。这样您就可以获得自动安全更新等。如果您想自己开发一些新东西,那么跟踪上游可能会很有用。

此外,通常您的发行版提供的标头应该由 gcc & co 找到。无需您复制它们,因此 yum/rpm 将它们存储在何处都没有关系。

于 2010-08-28T12:20:27.223 回答
1

我通常使用我的发行版提供的软件包,如果它们的版本足够新的话。有两个原因:

1)如果旧包中的安全漏洞被发现,有人会确保我得到新包。

2)它节省了我的时间。

当我建立一个开发项目时,我从不创建自己的 include/lib 目录,除非项目本身是我放在那里的相关文件的权威来源。

我使用 pkg-config 来提供必要库的位置并将文件包含到我的编译器中。pkg-config 使用一些 .pc 文件作为有关事物应该在哪里的信息来源,这些信息由为您的发行版创建软件包的同一个人维护。一些库不提供此文件,而是提供替代的“-config”-script。我将提供两个示例:

我没有运行 Fedora 13,但 Ubuntu 10.04 上的示例是;

*) 安装 liblog4c-dev

*) 命令“log4c-config --libs”返回“-L/usr/lib -llog4c”...

*) 命令“log4c-config --cflags”返回“-I/usr/include”

对于使用 pkg-config 的示例(我将使用 SDL 作为示例):

*) 安装 libsdl1.2-dev

*) 命令“pkg-config sdl --libs”返回“-lSDL”

*) 命令“pkg-config sdl --cflags”返回“-D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL”

... So even if another distribution decides to put things in different paths, there are scripts that are supposed to give you a reliable answer to where things is - so things can be built on most distributions. Autotools (automake, autoconf, and the likes) amd cmake are quite helpful to make sure that you don't have to deal with these problems.

于 2010-08-28T16:31:10.513 回答