C核心技术手册(四十)

18.3.3.3 动态链接和共享object文件

  共享库为特殊的object文件,它们可以在运行时被连接到程序中来,使用共享链接库具有许多优点:执行文件较小;共享模块允许更新;高效。

创建一个共享object文件,可使用GCC-shared选项目,输入必须是一个存在的object文件。下面是一个简单的例子:

$ gcc -c circulararea.c

$ gcc -shared -o libcirculararea.so circulararea.o

上面第二条命令创建了共享object文件libcirculararea.so,将一个可执行程序与共享object文件连接,在命令和中像使用其他object文件或库文件一样对它进行命名。

$ gcc -c circle.c

$ gcc -o circle circle.o libcirculararea.so –lm

此命令创建了一个可执行程序,它可以在运行时动态地与libcirculararea.so连接,当然,你必须确保程序在运行时能够找到共享库,这可以通过将你的库文件安装在标准的目录下,如/usr/lib,或设置一个适当的环境变量,如LD_LIBRARY_PATH,配置动态库加载的机制因系统不同而有差异。

如果共享库在你的系统上可用,但你应该避免其对潜在的恶意代码开放,例如,可以使用-static选项调用GCC:

$ gcc -static -o circle circle.o circulararea.o –lm

但这样,生成的结果程序将比较大。

posted @ 2011-04-25 00:30  Socrates  阅读(106)  评论(0编辑  收藏  举报