我在Ubuntu v12.10上使用Eclipse CDT/CodeSourcery Lite交叉编译我的C项目。
在Eclipse CDT中,我有以下三个C项目:
- exeTop//使用libmiddle.a中定义的函数的可执行文件
- libmiddle。a//使用libbottom定义的函数的静态库。a
- libbottom。一个//独立的静态库依赖于任何其他库
为了构建libmiddle。a,我必须复制libbottom。A放到libmiddle的项目文件夹中(见这里的说明),这对libmiddle来说是有意义的。A依赖于libbottom.a.
然而,当构建exeTop时,我不仅要链接到libmiddle。A:但是要去libbottom。A(其中libmiddle。)A已经链接到)。
Q1。为什么需要链接到libbottom。a from exeTop?
Q2。我可以使用任何编译器或链接器选项,以便我可以链接到libmiddle。a from exeTop?
你说"为了构建libmiddle。a,我必须链接到libbottom。A,也就是libmiddle。A取决于libbottom。"我认为情况并非如此。实际上是libmiddle。A不能真正链接到libbottom。a,因为这不是静态库在Linux上的工作方式。静态库只是目标文件的"存档",并且没有使它们依赖于其他静态库的特性。将静态依赖项塞进静态库本身也不典型。
有关更多细节,请参阅[UNIX]:我是否需要在我的项目's makefile中添加所有从库中使用的库,并在我的项目中使用?