当前位置:  技术问答>linux和unix

共享库.so怎么生成与使用?

    来源: 互联网  发布时间:2015-09-08

    本文导语:  Hi, 用cc -shared -o libmytest.so func1.o func2.o ...生成的libmytest.so,  调用时一定要用dlfcn.h,dlopen, dlsym, dlclose等才能调用吗? 我想生成共享库,别的程序只要用cc ... -lmytest link,然后在自己的程序中就可以很简单地直接...

Hi,
用cc -shared -o libmytest.so func1.o func2.o ...生成的libmytest.so, 
调用时一定要用dlfcn.h,dlopen, dlsym, dlclose等才能调用吗?
我想生成共享库,别的程序只要用cc ... -lmytest link,然后在自己的程序中就可以很简单地直接调用.so中定义的函数。
有人说Linux下库有3种:静态,共享和动态连接。我觉得我需要的应该是第2种吧。
请高手指点一下。谢谢!

|
创建和使用so的例子:
文件line.h和line.cpp定义了类CLine,我们想把这两个文件做成so库供别人使用,则
写Makefile如下:
libline.so: line.o
g++ -shared -o libline.so line.o    
cp libline.so /usr/lib             #we copy libline.so to /usr/lib  ldconfig                           #update configure file

line.o: line.cpp line.h
g++ -c -g -w line.cpp

clean:
rm -rf line.o libline.so /usr/lib/libline.so 


假设我们有一个程序test.cpp想用这个so库,首先在test.cpp中包含line.h文件,
然后写Makefile如下:

INCPATH = -I./lib -I./
COMPILE = g++ $(INCPATH) -c -g -Wall -W

all: test.o
g++ -o run test.o -lline      #-lline means link /usr/lib/libline.so 

test.o: test.cpp
$(COMPILE) test.cpp

clean:
rm -rf test.o run


如有不对的地方还请指正

|
to generate so file and corresponding .a file, using following command:

g++ $^ -shared -L$(LIBDIR) -o $(OUTDIR)/libXXX.so -Wl,      
                  --out-implib=$(LIBDIR)/libXXX.a           
                  -Wl,--no-whole-archive $(DEPENDS)

|
不需要dlfcn.h,dlopen, dlsym, dlclose,调用时直接加上-lmytest就可以了,不过要给出.so的路径-L……

|
直接连接也可以用!包涵头文件

|
linux共享库
起个名字叫 libmytest.so 就行了

|
同意1楼,
还要在LD_LIBRARY_PATH里加上.so的路径,运行时才不会报错。

    
 
 

您可能感兴趣的文章:

  • 生成.so的共享库
  • 生成so共享库和使用
  • ubuntu中如何配置生成、使用共享库
  • Solaris 生成共享库的问题
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • Unix/linux下如何监测共享内存的使用情况
  • 几台机器做lvs,使用100M 网线连接,文件系统使用NFS共享,读写速度会出现问题吗?
  • linux下共享内存 函数shmat()的使用!
  • 在语言中,什么是共享内存,怎样使用,举例?
  • linux 下如何共享使用windows下的内容
  • 关于共享存储段的使用,求助高手
  • 使用共享内存的一个问题
  • 服务器端的共享内存可否被远程客户端的进程所挂载使用?
  • 具体如何使用nfs共享
  • 如何使用共享库
  • 如何使用kdevelop创建动态共享库程序,请高手指点
  • 哪位有信号量和共享内存同时使用的例子??高分
  • 关于共享内存的使用,急~~~~~~~~~~~~~~~~~~~~~~
  • 怎么让windows用户不用登陆就可以查看并使用samba的共享目录?
  • 怎么在linux下边使用c++/或者c写出共享文件的程序??
  • 难道这样使用共享内存中的指针变量是不允许的吗?
  • 使用VMWare共享Win200中的文件夹,对应Linux中的哪个目录下面?
  • php跨域cookie共享使用方法
  • samba 的问题...............到底如何使用它共享windows的文件阿.
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux 共享内存介绍及实现代码
  • NFS共享作业时, 在客户端只可以看到服务器端的共享目录,而看不到共享目录下的内容.?
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • 多个进程对系统V共享内存进行读写,怎样实现对共享内存部分进行加解锁?
  • 如何共享 共享库(*.so)中的变量?
  • 局域网共享问题:win2000的机器看不到linux机器的共享目录?
  • 用samba共享其它机子访问Linux共享时,机子可以进入,但要打开共享文件夹时提示“无法访问...找不到网络名。”这是什么原因呢?
  • 局域网中的红旗2.0如何共享到win98服务器的联接共享?
  • 在linux下能不能创建一个堆,然后给堆指定一块共享内存,然后各个程序用此堆来new对象来共享?
  • 局域网共享问题:win2000的机器看不到linux机器的共享目录?解决立即给分
  • 几个servlet共享一些数据 如我从数据库里读出一些重要的设置存入vector 让几个servlet共享 怎么做到?先谢
  • 求助linux普通用户下内存共享(系统V共享)大家进来看看啊!急!!
  • 关于中断共享的问题:ADC 与触摸屏的中断共享
  • 不同用户user之间如何访问共享内存?
  • 无法访问samba服务器中的共享文件夹
  • XP下设置与linux 本地连接的Internet共享问题
  • 【求助】linux下什么是共享内存,怎么查看。
  • 我想知道LINUX如何与WIN98,WIN2000共享资源?
  • 判断共享内存中是否有数据
  • 多进程共享变量
  • 共享内存问题,高手们请进!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3