一、创建库文件:
编辑头文件(.h)和源文件(.c;.cxx)。
生成目标文件:
$gcc -c <src_fname_list> -o <fname_obj>
生成静态库文件:
$ar cr lib<fname>.lib obj_fname_list
例如:
$ar cr libmymath.a mymath1.o mymath2.o
生成动态库文件:
$gcc -shared -fPIC -o lib<fname>.so <obj_fname_list>
例如:
$gcc -shared -fPIC -o libmymath.so mymath1.o mymath2.o
//----
二、指定库文件的搜索路径:
动态库的搜索次序:gcc命令指定,环境变量LD_LIBRARY_PATH指定,
配置文件/etc/ld.so.conf内指定(/etc/ld.so.cache),默认的/usr/lib,默认的/usr/local/lib。
gcc命令指定的方法:-L <dir> -l<lib_base_name>。
环境变量LD_LIBRARY_PATH指定的方法(若指定多个目录,可用冒号间隔):
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<dir_name>
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<dir_name1>:<dir_name2>....
例如:
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/linux2014/MyLib
配置文件/etc/ld.so.conf内指定的方法:编辑此文件,将库文件的搜索路径加到文件末尾,在终端执行ldconfig命令。
静态库的搜索次序:gcc命令指定,环境变量LIBRARY_PATH指定,
默认的/lib,默认的/usr/lib。
//---
三、引用方法:
$gcc <obj_fname_list> -o <exe_fname> -L <dir> -l<lib_base_name>
或:
$gcc -L <dir> -l<lib_base_name> <obj_fname_list> -o <exe_fname>
优先引用动态库。
//----
四、添加动态库文件到指定目录的方法:
(1)、若将.so文件加入到默认的/usr/lib,或/usr/local/lib目录下,在终端执行ldconfig命令。
(2)、若将.so文件加入到其他目录下,需将库目录写入共享库配置文件/etc/ld.so.conf内。示例如下:
#cat /etc/ld.so.conf
#echo "/home/linux2014/MyLib" >> /etc/ld.so.conf
#ldconfig
(3)、export LD_LIBRARY_PATH,是临时指定。
(4)、向/etc/ld.so.cache内添加动态库文件搜索路径的方法:
#ldcofig <dir_name>//刷新/etc/ld.so.cache
或:先写入文件/etc/ld.so.conf内,再执行ldconfig刷新:
#echo "<dir_name>" >> /etc/ld.so.conf
#ldconfig
编辑头文件(.h)和源文件(.c;.cxx)。
生成目标文件:
$gcc -c <src_fname_list> -o <fname_obj>
生成静态库文件:
$ar cr lib<fname>.lib obj_fname_list
例如:
$ar cr libmymath.a mymath1.o mymath2.o
生成动态库文件:
$gcc -shared -fPIC -o lib<fname>.so <obj_fname_list>
例如:
$gcc -shared -fPIC -o libmymath.so mymath1.o mymath2.o
//----
二、指定库文件的搜索路径:
动态库的搜索次序:gcc命令指定,环境变量LD_LIBRARY_PATH指定,
配置文件/etc/ld.so.conf内指定(/etc/ld.so.cache),默认的/usr/lib,默认的/usr/local/lib。
gcc命令指定的方法:-L <dir> -l<lib_base_name>。
环境变量LD_LIBRARY_PATH指定的方法(若指定多个目录,可用冒号间隔):
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<dir_name>
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<dir_name1>:<dir_name2>....
例如:
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/linux2014/MyLib
配置文件/etc/ld.so.conf内指定的方法:编辑此文件,将库文件的搜索路径加到文件末尾,在终端执行ldconfig命令。
静态库的搜索次序:gcc命令指定,环境变量LIBRARY_PATH指定,
默认的/lib,默认的/usr/lib。
//---
三、引用方法:
$gcc <obj_fname_list> -o <exe_fname> -L <dir> -l<lib_base_name>
或:
$gcc -L <dir> -l<lib_base_name> <obj_fname_list> -o <exe_fname>
优先引用动态库。
//----
四、添加动态库文件到指定目录的方法:
(1)、若将.so文件加入到默认的/usr/lib,或/usr/local/lib目录下,在终端执行ldconfig命令。
(2)、若将.so文件加入到其他目录下,需将库目录写入共享库配置文件/etc/ld.so.conf内。示例如下:
#cat /etc/ld.so.conf
#echo "/home/linux2014/MyLib" >> /etc/ld.so.conf
#ldconfig
(3)、export LD_LIBRARY_PATH,是临时指定。
(4)、向/etc/ld.so.cache内添加动态库文件搜索路径的方法:
#ldcofig <dir_name>//刷新/etc/ld.so.cache
或:先写入文件/etc/ld.so.conf内,再执行ldconfig刷新:
#echo "<dir_name>" >> /etc/ld.so.conf
#ldconfig