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还是动态