我写了如下程序:
1、sayhello.c用于生成动态链接库libsayhello.so【路径和main.c和my_so.h路径不同】
2、my_so.h头文件用于预处理过程中函数的声明
3、main函数,实现动态库函数的调用
刚开始用gcc -o sayhello.so -fPIC -shared sayhello.c编译生成sayhello.so动态链接库,
结果在执行编译main函数出现
后经过验证生成的动态库要以lib。。。的形式,重新完成生成动态库libsayhello.so
执行如下即可实现【-l库名,系统自动加上lib关键字】【如果我将my_so.c写到链接后面,也会提示报错,需进一步验证原因】
完成之后,执行ldd查看my_so依赖的库
又找不到了,原因是我的路径和库路径不在一起并且库路径并没有在系统库路径里,虽然编译链接过了,但是还是没有配置系统库路径,还是找不到的,执行此程序当然也就会报错了,后我将libsayhello.so拷入到/usr/lib下,即可正常,ldd查看链接库状态也正常了...
链接库位置在/etc/ld.so.conf中,明天看看将自己定义的动态库路径添加到系统库路径中...