另外,GCC在默认情况下使用共享库来链接程序,而当你想链接静态库的时候,一定要使用-static选项,例如-lncurses -static
在这一部分的最后,我们对编译时用到的GCC常用命令做一个简要的总结
上面,我们提到了关于GCC编译的常用命令,这里另外补充一些帮助性的常用命令,他们可以让你对GCC的基本配置和使用作一个了解。
在这部分的最后,我们来谈一谈关于构建软件时链接参数的设定问题。在上面的第5部分我们已经提到了,函数库的使用是需要-L和-l一起配合来使用的,但实际上,往往一个像样的程序需要很多库的支持,例如,如果你需要编写一个GTK程序,我们需要下面的链接参数:-L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 –lm,看上去有些吓人,你可能会问,我如何知道需要这些呢,如果我想编写KDE的程序呢,还有OpenGL呢?其实,情况比你想象的要好很多,在/usr/bin目录下,有很多名为xxx-config的脚本,它们的作用就是向用户显示编译链接程序时使用的参数的。这些脚本可以接受一些参数,比较常用的有—libs用于列出链接特定程序时使用的程序库,另外--cflags用于生成头文件的包含目录,也就是上面我们提到的-I参数。于是,对于GTK程序,我们可以使用下面的命令来编译:gcc gtksource.c `gtk-config –libs --cflags`当然,为每一种程序写一个config显然不是一个好办法,目前新的开发包都使用pkg-config这个脚本来生成链接参数。你可以使用pkg-config –list-all查看pkg-config支持的所有链接参数当你在上面这份列表中查到了自己想要程序包时,就可以使用下面的命令来编译程序了gcc .suffix `pkg-config
--libs --cflags`