今天有网友问我他在编译某个文件的时候,提示libiconv.a 文件找不到,然后qq 留言:
这里首先有一个前提想说明一下:对于咱技术开发人员来讲,建议最好把什么是.a,什么是.so 什么事.lo 什么是.la,以及他们的区别与使用场景, 这些基础耐心补充一下,这样不论遇到安装或扩展什么库,才能真正游刃有余;
关于.a,.so 的介绍,后续有时间再细说;
今天就以libiconv.为例讲讲库的编译;
首先我们到官网或者库资源站点下载官方的libiconv库,比如可以从以下链接下载到不同版本的libicon库的源码包:
http://ftp.gnu.org/pub/gnu/libiconv/
http://mirror.hust.edu.cn/gnu/libiconv/
下载完毕后,可以将库解压到一个目录下,比如我的是centos系统,我解压并放到了/usr/local/src/下;
然后cd libiconv-1.15 进入这个目录:
然后就按编译安装的三步走:
configure
make
make install
即可完成安装;
那么重要的就是,在第一步的时候,就需要你自己做区分,如果你是需要.so的动态扩展库,那么可以直接:
./configure --prefix=/home/work/app/libiconv/ (提示:请先确认/home/work/app/libiconv/ 目录是否存在,如果不存在的话则可以创建,当然你也可以将其安装到其他任何你想安装的目录下面,如果默认不写--prefix路径的话,会自动安装到/usr/local下面的)
则步骤就是:
1.
./configure --prefix=/home/work/app/libiconv/
2.
make
3.
make install
这个时候,你去/home/work/app/libiconv/ 目录下查看,进入其lib子目录,就会看到相关的动态库(.so类文件)
相应地,如果是需要编译并安装生成静态库.a文件,则同样也是三步走,唯一的区别就是在./configure的步骤这里:
在这步的时候你需要指定库类型 --enable-static --disable-shared ,即 :
1.
./configure --prefix=/home/work/app/libiconv/ --enable-static --disable-shared
2.
make
3.
make install
[root@dev001-241 lib]# pwd
/home/work/app/libiconv/lib
[root@dev001-241 lib]# tree
.
├── charset.alias
├── libcharset.a
├── libcharset.la
├── libiconv.a
├── libiconv.la
└── preloadable_libiconv.so
ok,今天就介绍到这里,谢谢大家;
我的qq :
1760282809
363232564
欢迎多多交流,一起进步!