红联Linux门户
Linux帮助

全面阐述Linux动态库的隐式调用

发布时间:2011-06-29 15:22:37来源:赛迪作者:linux使用者

这里为你讲解inux动态库的隐式调用,为你在学习Linux动态库的隐式调用时起一定的作用。


隐式调用的含义是代码里不出现库文件名,就是说这个代码和调用静态库的代码是类似的。


1、编写测试文件


//main.c 测试动态库隐式调用的程序
#include "myalib.h"   //要把函数的头文件包含进来,否则编译时会报错
int main(int argc,char* argv[])
{
test();
return 0;
}


2、 编译测试程序,与静态库类似,要把头文件的路径加到-I参数里面


gcc -I /root/exercise -o main.o -c main.c

现在生成了一个main.o文件


3、连接生成测试程序


gcc -o main -L/root/exercise   main.o -ltest

现在生成了一个main文件


4、执行测试程序


./main

此时出现提示

./main: error while loading shared libraries: libtest.so: cannot open shared object file: No such file or directory。


这个原因就是程序运行时并不知道动态库所在的路径,因此自然找不到。以上就是Linux动态库的隐式调用的讲解。