2009-12-31 113 views

回答

5

库包含两个主要组件--C头文件和编译的目标代码归档。海湾合作委员会有一些令人困惑的指定这些事情的方法,但假设您正在使用位于相对目录路径foo/lib中的库foo.a以及位于foo/inc中的报头foo.h。你自己的C代码住在main.c,看起来像这样:

#include "foo.h" 
int main() { 
    return FooFunc(); // call function in foo.a 
} 

要编译这一点,你可以使用命令行:

gcc main.c -Ifoo/inc foo/lib/foo.a -o main.exe 

-I标志增加了路径搜索头。你也可以添加到lib路径,但事情开始变得复杂:-)

+0

+ 1,它是有帮助的!但你能让它更一般吗?说如果我想包括来自两个不同目录的2个库。BTW,似乎不是每个库包含* .h和* .a,至少我只看到* .a和*。o在MinGW/lib下? – user198729 2009-12-31 15:43:41

+0

要指定更多包含路径,请使用更多-I标志来指定更多库,并在命令行中指定它们。在一天结束时,SO不是教程网站 - 请阅读GCC手册,并且可能是一本书,例如http://www.network-theory.co.uk/gcc/intro。 – 2009-12-31 15:49:19

2

使用gcc

  • 得到源
  • 解压
  • 运行配置任何其他系统没有什么不同 - 这可能需要一个调整或两个
  • 使
  • 使安装

现在使用你的新具有正确的-Lfoo/bar -lfoobar开关的库。

我推荐MSys系统围绕MinGW来完成这一切。

+0

哦,我忘了提及我使用的是Windows XP,你可以更具体地了解细节吗? – user198729 2009-12-31 15:16:44

+0

您需要一本关于使用Unix工具进行代码开发的书(或网络教程)。这里没有特定于Windows XP的内容 - 除了您尝试学习Windows上不常见的工作流这一事实外。你在这里做的是正确的事情,但是你或多或少需要知道它在Linux/Unix上的工作原理来推断它在XP上的工作方式。只要找到一个体面的教程... – 2009-12-31 15:33:16

1

我刚刚通过自己搞清楚了这一点。我强烈建议您阅读MinGW网页上的linking howtos。仔细阅读它们,因为有很多东西需要接受。它们非常全面,所以它非常值得你花时间。

基本上有两种做事的方式。首先,您可以将MinGW视为编译器,因为它就是这样,并从cmd.exe(命令提示符)或IDE中调用它。另一种方法是使用MSYS,它基本上是一个Unix风格的shell,可以在Windows上运行,以使用Unix样式的构建工具,如configure和make。

对于其中任何一个,您都必须阅读上面链接的howto以了解如何搜索依赖路径。我不愿意在这里解释它,因为它已经在howtos中进行了解释,并且重复说明信息不是一个好主意。如果您在阅读后遇到具体问题,我很乐意提供更多帮助。