动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息

本月文章推荐
.中间件:Oracle首推插座式SOA套件.
.没有备份只有归档日志如何恢复数.
.Spring调用Oracle存储过程结果小.
.如何使用Oracle case函数.
.oracle停写日志的写法.
.为Linux和Windows安装PHP和Oracl.
.all installing oracle9i under .
.tkprof和sql trace.
.[Oracle]优化Oracle网络设置的方.
.SQL*Report 1.1 Error Messages .
.Linux 7.1 上的 oracle8.1.7安装.
.Linux下IPV4和IPV6的互操作性研究.
.Linux系统下的Oracle数据库编程详.
.输出oracle 对象源码.
.手工安装Oracle全文检索工具.
.创建表时考虑列的顺序.
.通过SELECT语句实现两个记录集的.
.Oracle 10G 最佳20位新特性:改善.
.谨慎做数据库技术的标准化.
.快速导出导入expdp/impdp的停止与.

在Linux创建库函数(8)

发表日期:2008-2-9 |



  摘要:下面是一些例子,例子中我们会使用三种函数库(静态的、共享的和动态加载的函数库)。文件libhello.c是一个函数库,libhello.h是它的头文件;demo_use.c则是一个使用了libhello函数库的。 Script_static和script_dynamic分别演示如何以静态和共享方式使用函数库,而后面的demo_dynamic.c和script_dynamic则表示演示如何以动态加载函数库的方式来使用它。
  6. 更多的例子
  
    下面是一些例子,例子中我们会使用三种函数库(静态的、共享的和动态加载的函数库)。文件libhello.c是一个函数库,libhello.h是它的头文件;demo_use.c则是一个使用了libhello函数库的。Script_static和script_dynamic分别演示如何以静态和共享方式使用函数库,而后面的demo_dynamic.c和script_dynamic则表示演示如何以动态加载函数库的方式来使用它。
  
    6.1. File libhello.c
  
  /* libhello.c - demonstrate library use. */
  #include
  void hello(void)
  {
   printf("Hello, library world.
  ");
  }
  
    6.2. File libhello.h
  
  /* libhello.h - demonstrate library use. */
  void hello(void);
  
    6.3. File demo_use.c
  
  /* demo_use.c -- demonstrate direct use of the "hello" routine */
  #include "libhello.h"
  int main(void)
  {
   hello();
   return 0;
  }
  
    6.4. File script_static
  
  #!/bin/sh
  # Static library demo
  # Create static library's object file, libhello-static.o.
  # I'm using the name libhello-static to clearly
  # differentiate the static library from the
  # dynamic library examples, but you don't need to use
  # "-static" in the names of your
  # object files or static libraries.gcc -Wall -g -c -o libhello-static.o
  libhello.c
  # Create static library.ar rcs libhello-static.a libhello-static.o
  # At this point we could just copy libhello-static.a
  # somewhere else to use it.
  # For demo purposes, we'll just keep the library
  # in the current Directory.
  # Compile demo_use program file.gcc -Wall -g -c demo_use.c -o demo_use.o
  # Create demo_use program; -L. causes "." to be searched during
  # creation of the program. Note that this command causes
  # the relevant object file in libhello-static.a to be
  # incorporated into file demo_use_static.gcc -g -o demo_use_static
  demo_use.o -L. -lhello-static
  # Execute the program../demo_use_static
  
    6.5. File script_shared
  
  #!/bin/sh
  # Shared library demo
  # Create shared library's object file, libhello.o.gcc -fPIC -Wall
  -g -c libhello.c
  # Create shared library.
  # Use -lc to link it against C library, since libhello
  # depends on the C library.gcc -g -shared -Wl,-soname,libhello.so.0 -o
  libhello.so.0.0 libhello.o -lc# At this point we could just copy
  libhello.so.0.0 into
  # some directory, say /usr/local/lib.
  # Now we need to call ldconfig to fix up the symbolic links.
  # Set up the soname. We could just execute:
  # ln -sf libhello.so.0.0 libhello.so.0
  # but let's let ldconfig figure it out./sbin/ldconfig -n .
  # Set up the linker name.
  # In a more sophisticated setting, we'd need to make
  # sure that if there was an existing linker name,
  # and if so, check if it should stay or not.ln -sf libhello.so.0
  libhello.so
  # Compile demo_use program file.gcc -Wall -g -c demo_use.c -o
  demo_use.o
  # Create program demo_use.
  # The -L. causes "." to be searched during creation
  # of the program; note that this does NOT mean that "."
  # will be searched when the program is executed.gcc -g -o demo_use
  demo_use.o -L. -lhello
  # Execute the program. Note that we need to tell the program
  # where the shared library is,
  using LD_LIBRARY_PATH.LD_LIBRARY_PATH="." ./demo_use
  
    6.6. File demo_dynamic.c
  
  /* demo_dynamic.c -- demonstrate dynamic loading and
   use of the "hello" routine */
  /* Need dlfcn.h for the routines to
   dynamically load libraries */
  #include
  #include
  #include
  /* Note that we don't have to include "libhello.h".
   However, we do need to specify something related;
   we need to specify a type that will hold the value
   we're going to get from dlsym(). */
  /* The type "simple_demo_function" describes a function that
   takes no arguments, and returns no value: */
  typedef void (*simple_demo_function)(void);
  int main(void)
  {
   const char *error;
   void *module;
   simple_demo_function demo_function;
   /* Load dynamically loaded library */
   module = dlopen("libhello.so", RTLD_LAZY);
   if (!module)
   {
   fprintf(stderr, "Couldn't open libhello.so: %s
  ",dlerror());
   exit(1);
   }
   /* Get symbol */
   dlerror();
   demo_function = dlsym(module, "hello");
   if ((error = dlerror()))
   {
   fprintf(stderr, "Couldn't find hello: %s
  ", error);
   exit(1);
   }
   /* Now call the function in the DL library */
   (*demo_function)();
   /* All done, close things cleanly */
   dlclose(module);
   return 0;
  }
  
    6.7. File script_dynamic
  
  #!/bin/sh
  # Dynamically loaded library demo
  # Presume that libhello.so and friends have
  # been created (see dynamic example).
  # Compile demo_dynamic program file into an object file.gcc
  -Wall -g -c demo_dynamic.c
  # Create program demo_use.
  # Note that we don't have to tell it where to search
  for DL libraries,
  # since the only special library this program uses won't be
  # loaded until after the program starts up.
  # However, we DO need the option -ldl to include the library
  # that loads the DL libraries.gcc -g -o demo_dynamic
  demo_dynamic.o -ldl
  # Execute the program. Note that we need to tell the
  # program where get the dynamically loaded library,
  # using LD_LIBRARY_PATH.LD_LIBRARY_PATH="." ./demo_dynamic
  
    by luster(luster@Linuxaid.com.cn,hwang@ustc.edu)
  
    2001-8-22
  
    (完)
  
    任何bug发信给我,一起修改。
先谢谢。
上一篇:在Linux创建库函数(7) 人气:637
下一篇:为最佳性能而调优 Red Hat(1) 人气:427
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-5 Coppermine Photo Gallery v1.4.
2008-9-5 清松网络日记本 v2.4
2008-9-5 AyWeb企业网站管理系统 v2.3 bui
2008-9-5 美女写真小偷程序联盟 v3.0 buil
2008-9-5 老Y文章管理系统 v2.1
2008-9-5 SiteDynamic企业网站管理系统 v1
2008-9-5 MyCOM企业网站管理系统 v1.0 Bui
2008-9-5 乐风CMS影视版 2008
2008-9-5 幻影电影视频系统TvsCms v1.3 伪
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵