制作,编译和使用静态库
很多情况下,我们从网上得到的是一个纯C的代码包,他们这些库,往往是各种平台通用,代码包svn checkout
出来后,里面有makefile
, vcproject file
等。
但往往我们先README看过之后,通过
./configure make make install
来实现编译生成了一个库。(注意一些基本语法 ./confiure后如果带 --prefix=/path/to/your/custom/dir
表明自定义安装
路径。)
那么在这样的情况下,我们第一个首先会遇到的问题,就是这个库格式不兼容。
我们添加了这个库到project后编译时,显示
this file format doesn't support (i386)。
这个情况,是由于大部分snow leopard是INTEL DUO CPU,双核x86_64的,一般很多库,不加特别标注,都以为你开发了为MAC电
脑开发程序,所以库都默认为x86_64位的静态库。如果你好奇,可以new一个MAC开发程序的project,试着看看那个库能不能正常编译,没有warning就知道了。
当然,还有一个命令行来检测你编译的库,可以使用在什么平台架构下。
方法如下:
lipo -info /path/to/your/library.a
即可看到此库位i386, x86_64, arm等等。
明白了上面的问题的产生原因,我们就好办了。 一般解决办法是这样的,在`./configure` 之后加一点参数,比如 CFLAG="-arch i386"
。GCC的path设定到SDK path以下的`/usr/lib/gcc/i686` or `arm`下。注意,SDK PATH,有两种,iphoneOs 和iphoneSimulator.有很大的区别!!
好了。以上是第一个问题。随后,你编译成功,lipo检测版本也OK后,你可以*.a 静态库文件到Project了。记得选中复制到项目。
再一个问题,也就是第二大问题,就是如何导入头文件。