linux动态链接库(linux动态链接)-编程之家

linuxc编程调用系统的动态库时,要使用dlopen等函数吗?

linux调用库的方式有三种:

1.静态链接

2.动态链接库

3.动态加载库

其中1,2都是在编程时直接调用,在链接时加参数-l进行链接

第三种需要在编程时使用dlopen等函数来获取库里面函数的定义,然后进行调用.

不过对于没有提供头文件的动态库,只能dlopen等函数来调用

如何更新linux系统动态链接库/usr/local/lib/usr/lib?

可以放在当前目录下,但是要设置一下库文件的路径:LD_LIBRARY_PATH=./:/usr/local/pet20/lib:/lib/:/usr/local/lib export LD_LIBRARY_PATH 这样,在调用的时候就会自动从当前目录找。

如果是显式调用则不用,只要在程序里指定.so的文件路径就可以了。所以放在当前目录下也是没问题的。

cpp文件是怎么变成可执行文件的?动态链接库又是什么呢?

1.cpp是编译产生2进制代码,这个2进制代码就是exe

2.qt库就是一大堆已经写好的函数,跟你引用

3.makefile是用来帮助计算机编译C源文件的。在linux里面比较常用,告诉了计算机,要编译我的C源文件,需要什么版本的编译器,需要什么包,什么头文件,如果不满足就提示,如果满足就编译,还记录了C源文件的位置(因为不止一个),编译之后放到哪。等等。

4.静态链接库是lib,在编译的时候,将里面的代码直接写入exe中,随身带。

dll因为里面东西比较通用,一般电脑都有,所以在用的时候从系统里面拿就行。于是就不写这部分了,只标记在哪个dll里面。

如何在macosx中创建动态链接库?

  创建动态链接库:  

1、生成module文件,也就是.o文件。这跟一般的Linux没什么区别。  cc -c a.c b.c 就得到a.o和b.o  

2、用ld来合并.o文件  ld -r -o c.o a.o b.o 这个也没什么特别。  

3、用libtool来创建动态链接库。  libtool -dynamic -o c.dylib a.o b.o ( 这里也可以用libtool -static -o c.a a.o b.o就创建静态库)  如果用gcc直接编译,linux下一般是:  gcc -shared -o c.so a.c b.c  而在Mac OS X下需要:  gcc -dynamiclib -o c.dylib a.c b.c  这往往也是向Mac OS X移植unix程序常出问题的地方。如果用autoconf/automake等工具,出错的几率应该小一些。  访问动态链接库:  1、nm是最常用的,这个用法跟linux下差不多  nm c.dylib 可以看到导出符号表,等等。  2、另一个常用的工具是otool,这个是Mac OS X独有的。比如想看看c.dylib的依赖关系  otool -L c.dylib  对Framework的理解:  Framework是Mac OS X下必不可少的部分,不妨去看看/System/Library/Frameworks/下面,一大堆Framework。Framework是dylib的进一步演化,它把头文件、文档、动态链接库等整合成一个有机的目录,类似一种自描述的方式,这种做法其实在Mac OS X下随处可见。比如应用程序,一般都是一个目录,譬如/Applications/iTunes.app目录对应应用程序iTunes,双击这个目录即开始执行。这种做法和Windows下常见的一个exe/dll打天下很不相同。  Framework的创建工具也是libtool,详细用法参考man。  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  这里介绍一下怎么开发最简单的Cocoa程序,这个程序实在是太简单,因为如果你用Xcode的话,选用Cocoa Foundation Command Tool的话,应该不用写任何代码, 但是这里是为了向大家介绍一下,这个最简单的程序是如何通过gcc编译成功的,当然里面还有一个东西可以做一点解释.    先看看源代码:  #import

linux重启后无法连接22端口?

ssh服务吗??1. 可能ssh服务没有开机启动2. iptables设置问题3. 静态IP还是动态