`
dyx1024
  • 浏览: 115175 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

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

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics