gcc 4.4.4 c89 Fedora 13
我想知道什么是更好的。为您提供示例编译: apache runtime portable 和 log4c 。
我的fedora存储库中的apr版本是1.3.9。 apr网站上最新的稳定版本是1.4.2。
问题
即。
project_name/tools/log4c/inc
project_name/tools/log4c/libs
但是,我注意到我必须在/usr/include
目录中查找一些标题。
非常感谢任何建议,
答案 0 :(得分:4)
如果您的发行版的软件包存储库中的版本足够新,请使用它。
优点是通过您的分发自动更新,轻松快速的安装(包括自动获取和安装依赖项!)和轻松删除软件包。
如果你自己安装.tar.gz的东西,你必须自己发布 - 跟踪安全问题和错误。
使用分发包,您也会关注安全问题,但是经销商会为您做很多工作(比如开发补丁,重新打包,测试和捕获严重的东西)。当然,每个经销商都有一个策略如何处理不同包存储库的不同类别的问题。但是对于你自己的.tar.gz安装,你没有任何关系。
答案 1 :(得分:2)
我认为这是一个古老的问题。并且它在所有Linux发行版中都是一样的。
包裹是由某人创造的 - 该人对于应该去哪里有意见。您可能不同意 - 但是通过使用软件包,您可以不遗余力地追查编译和安装软件所需的所有依赖项。
因此,为了完全控制:自己动手 - 但要为可能的工作做好准备 否则使用包裹。
我的观点: 使用包直到不可能这样做(冲突,需要编译参数,......)。我宁愿花时间让软件为我工作,也不愿花时间编译。
答案 2 :(得分:1)
如果你想构建一些必须与Fedora中包含的Apache一起工作的东西,那么最好在Fedora中使用apr
版本。这样您就可以获得自动安全更新等。如果您想自己开发新内容,那么跟踪上游可能会很有用。
此外,通常你的发行版提供的标题应该由gcc& amp;合。无需复制它们,因此yum / rpm存储它们的位置并不重要。
答案 3 :(得分:1)
我通常使用我的发行版提供的软件包,如果它们是足够新的版本。这有两个原因:
1)如果发现旧的软件包中的安全漏洞,有人会确保我获得新的软件包。
2)它节省了我的时间。
当我设置开发项目时,我从不创建自己的include / lib目录,除非项目本身是我放在那里的相关文件的授权源。
我使用pkg-config提供必要库的位置并将文件包含到我的编译器中。 pkg-config使用一些.pc文件作为关于事物应该在何处的信息的来源,并且这些文件由为您的发行版创建包的人员维护。有些库不提供此文件,而是提供替代的“-config”脚本。我将提供两个例子:
我没有运行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”
...因此,即使另一个发行版决定将内容放在不同的路径中,也有一些脚本可以为您提供可靠的答案 - 因此可以在大多数发行版上构建内容。 Autotools(automake,autoconf等)和amd cmake非常有助于确保您不必处理这些问题。