ld 编译动态库 以及引用动态库
?
#编译动态库之前编译成.o文件的参数
CCFLAG="${CCFLAG} -fPIC"?
#使用ld编译动态库的参数
LDFLAG=" -shared "
?
gcc -c -g -O2 -Wall? -fPIC list.c
产生-->list.o文件
?
使用
ld -s -G $A $LDFLAG -o $OBJ
产生-->.so文件
ld -s -G list.o -L/simHx/lib -shared -o libtools.so
?
?
编译可执行文件
gcc -c -g -O2 -Wall? -fPIC??mem.c
--->mem.o
gcc mem.o??-L/home/testlib? -ltools? -o test_mem
-->可执行文件 test_mem
?
执行:
./test_mem
?
如果提示找不到libtools.so文件,说明需要配置ld路径
?
参考如下:
http://www.2cto.com/os/201306/222628.html
cannot open shared object file: No such file or directory解决
./move_db: error while loading shared libraries: libmysqlclient.so.15: cannot?
open shared object file: No such file or directory?第一步:确认有哪些Lib无法Load?>ldd move_db?linux-gate.so.1 => (0x0089c000)?libmysqlclient.so.15 => not found?libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00cfa000)?libm.so.6 => /lib/libm.so.6 (0x00804000)?libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x009f8000)?libc.so.6 => /lib/libc.so.6 (0x0069e000)?/lib/ld-linux.so.2 (0x0067b000)?第二步:系统要确认动态库的地址,把动态库的路径放到/etc/ld.so.conf中?建议:在/etc/ld.so.conf.d/上新建动态库相应的文件配置文件*.conf,?在该文件中填上该动态库的绝对路径?此例:?vim /etc/ld.so.conf.d/ld.mysql.so.conf?/usr/local/mysql/lib??第三步:运行ldconfig重建/etc/ld.so.cache