读书人

ld 编译动态库 以及摘引动态库

发布时间: 2013-07-23 09:43:37 作者: rapoo

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

读书人网 >编程

热点推荐