Makefile:强制项目在构建时使用动态或静态库

时间:2012-03-13 17:03:32

标签: c++ c linker makefile

我有一个简单的项目,它使用一个库来运行。

例如,我的程序名为“myApp”,我有一个我自己构建并编码的库,名为libspoonybard。设置libspoonybard的makefile,以便为此库生成共享对象(.so)和静态库(.a)文件。

-myApp
--libspoonybard

我在构建时指定什么(通过命令行标志或makefile),以便我可以将“myApp”构建为“静态”版本(即:强制使用libspoonybard.a)和“动态” “版本(在运行时强制使用libspoonybard.so)。

我已经尝试在StackOverflow上搜索类似主题的几个搜索,但所有结果似乎都集中在如何创建静态vs动态库,而不是如何指定链接哪个。对不起,如果这是转贴。

提前感谢大家的帮助。

2 个答案:

答案 0 :(得分:3)

“ - static”vs“-shared”可以在GCC下使用:

http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options

答案 1 :(得分:3)

您可以使用-static标志,直接指定.so或.a文件等。

简短介绍: 3.2 Shared libraries and static libraries (Stallman/Gough)