静态库的传递依赖与SCons
我在为两个库和它们的测试程序构建时,遇到了一个看似简单的问题。
问题是:我有两个静态库,分别叫libA和libB,而libB依赖于libA。我不想在使用libB的所有程序中都明确链接libA,我希望SCons能够自动识别,如果一个程序链接了libB,它也应该自动链接libA。
我做了一个简单的例子来说明这个问题。因为我找不到合适的文件托管服务,而且这是与编程相关的内容,所以我创建了一个小的SVN仓库:
svn checkout https://example-repository.googlecode.com/svn/trunk example-repository
或者你可以在这里下载一个压缩包。
2 个回答
0
libB和libA是什么?它们是一个大大的.o文件,还是由几个.o文件组成的库呢?
如果这些库是由多个.o文件组成的,并且你在libB的某个.o文件中调用了一个函数,而这个函数又用到了libA的某个.o文件,那么你就需要同时获取libB的.o文件和依赖的libA的.o文件。如果你在libB的.o文件中使用的函数不依赖于libA的任何东西,那么你只需要libB的.o文件就可以了。
所以,如果你有这个命令:
cc -o a.out a.c libA.a libB.a
你只会得到libB和libA中所需的部分。