【发布时间】:2011-04-14 13:56:29
【问题描述】:
哈,这听起来比实际上更复杂。这就是我的意思:
假设我编写了一个使用线程的应用程序。在这个应用程序中,我没有直接使用pthreads,而是使用了一个包装器,它使用了pthreads。因此,在此包装器的 makefile 中,必须包含 -lpthread。还有一个问题——我需要在我的项目中包含-lpthread,还是没有必要?还是视情况而定?如果有,在什么方面?
我问这个,因为我见过很多,我认为没有必要。-std=c++0x 也一样?
另外,我在使用 Informix C++ 接口时遇到了问题,因为它依赖于名为 DMI 的 lib,它构建在 ESQL/C 之上。当我删除这些库并只使用真正的库时,我遇到了链接器问题(查找库的问题)。当我添加dmi 和esql/c 时,一切都很好。
这是否回答了我的问题(使用“是”),或者我可能做错了什么,除此之外(我是 makefile 的新手 (:)
source: “Makefile 是一个神秘的话题——有一个笑话说世界上只有一个 makefile,而所有其他的 makefile 只是它的扩展。但是我向你保证,这不是是的;我不时编写自己的 makefile。”
这让我想到(我公司项目的)makefile 中包含的所有库是否都是必要的,或者这是出于“历史原因”
编辑:pthread 的包装器是静态链接的,Informix 库是动态链接的,如果这很重要的话。
此外,操作系统是 RHEL(4 和 5),但我需要知道这是否取决于操作系统和链接方式(动态或静态)
【问题讨论】:
-
库能够具有传递依赖。现在,有几个 Linux 变体支持它,但有些又开始禁用它(比如 Fedora)。有些操作系统从来没有。为清楚起见,要求使用所有库似乎是合理的。但是,像 automake/cmake 这样的构建系统会为您解决这个问题。
-
这个包装器是静态库还是动态库,或者仅仅是目标文件的集合,这个问题不是很清楚。