本节书摘来自异步社区《C程序设计新思维》一书中的第1章,第1.5节,作者 【美】Ben Klemens,更多章节内容可以访问云栖社区“异步社区”公众号查看
到目前为止我们讲的都是如何用make来编译自己的代码。而编译别人的代码则是另外一回事了。
让我们试一个简单的包,即包含大量数值计算函数的GNU科学计算库(GSL)。
GSL是用Autotools打包的,而Autotools是一系列为在任何机器上都能使用而准备库的工具,其原理是测试所有已知的特殊细节并实现适当的解决方法。Autotools主要关注现代的代码是如何发布的,“3.3用Autotools打包你的代码”将详细讲述如何用它来打包你自己的程序和库。但是到现在,我们可以从用户的角度,来欣赏快速安装有用的库文件的便利。
GSL经常是由包管理器预编译好的,但是为了掌握编译库的每一步的目的,这里我们先得到GSL的源代码并把它安装好,假设你具有计算机的root权限。
下载源文件的zip压缩包。如果你还没有wget,使用包管理器安装它,或者在你的浏览器里直接入这个URL。
解包:x=抽取,v=详细模式,z=用gzip解包,f=文件。
检测。如果configure步骤给你一个“缺失一个元素”的出错信息,那么用包管理器来获取它并重新运行configure。
将GSL安装到正确的位置上——需要具备相应权限。
如果你是在自己家里尝试这个,那么你可能已经有了root权限,上面步骤执行起来会很顺利。如果你是在工作场所并是在使用一个共享的服务器,则拥有超级用户权限的概率应该不会很大,由于最后一步要求超级用户权限,而你没有密码。如果这样,你就屏住呼吸直到下一部分吧。
它安装了吗?例1-3是一个使用GSL函数来找到95%的置信空间的小程序;编译一下这个例子,看看你能否把这个例子连接起来并运行。
例1-3 利用GSL来重做一次例1-1(gl_erf.c)
为了使用刚才安装的库,我们需要修改会用到这个库的程序的makefile文件,以指定库及其位置。
你可以采用下列语句的一种取决于你是否安装了pkg-config:
如果库没有被安装在标准的位置并且pkg-config也没有安装,你需要把路径加在定义行的开头,例如:CFLAGS=-I/usr/local/include和LDLIBS=-L/usr/locallib–Wl,-R/usr/local/lib。
相关资源:C 程序设计语言(特别版)--课后习题源代码