[UNIX]:是否需要在项目的Makefile中添加从项目中使用的库中使用的所有库?
|
哈,这听起来比实际要复杂。这是我的意思:
假设我编写了一个使用线程的应用程序。在此应用程序中,我没有直接使用
pthreads
,而是使用了一个使用pthreads
的包装器。因此,在该包装的makefile中,必须包含-lpthread
。问题是-我是否需要在项目中包含ѭ2?还是没有必要?还是取决于?如果是这样,那又是什么?
我问这个问题是因为我已经看过很多次了,所以我认为这不是必需的。-std=c++0x
也是吗?
另外,我还有一个Informix C ++接口的问题,因为它依赖于名为DMI
的lib,该库建于ESQL/C
的顶部。当我删除这些库并仅使用真正的库时,出现链接器问题(查找库的问题)。当我加上dmi
和esql/c
时,一切都很好。
这是否回答了我的问题(使用\“ YES \”),或者我做错了什么,否则(我是makefiles(:)的新手。
来源:“ Makefile是一个不可思议的话题–开个玩笑,世界上只有一个Makefile,而所有其他Makefile只是它的扩展。但是,我向您保证,这不是真的;我拥有不时编写自己的makefile。”
这使我想到是否需要(我公司的项目的)makefile中包含的所有库,或者这是出于“历史原因”
编辑:围绕pthread
的包装是静态链接的,而Informix
lib是动态链接的,如果这很重要。
另外,操作系统是RHEL(4和5),但是我需要知道这是否取决于操作系统以及链接方式(动态或静态)。
没有找到相关结果
已邀请:
3 个回复
漂截嘘
是没有意义的,因为没有链接。 仅当调用链接器从所有库和目标文件中生成最终可执行文件时,才需要使用
选项传递特定的库。请注意,此步骤未调用编译器,并且<13>不是编译器选项,而是链接器选项。 例如,这仅调用链接器,因为没有提供源文件:
相比之下,将源文件编译为目标文件并指定库是没有意义的,因为将不执行链接:
蹦吃舷弦
铰齐插