易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux平台上动态链接库的创建与加载

        在读jvm代码时,学习了读取动态链接库的方法。下面就.so文件的创建和读取做一个简单的总结。
1.创建.so文件
add.h
 #ifndef ADD_H
#define ADD_H
int add(int arg1,int arg2);
#endif

add.c
#include "add.h"
int add(int arg1,int arg2)
{
return arg1 + arg2;
}
编译为.o文件:
gcc -fPIC -c add.c
生成库文件:
gcc -shared -Wl,-soname,libadd.so.1 -o libadd.so.1.0 add.o
cp libadd.so.1.0 libadd.so
这样就生成了libadd.so库文件。修改LD_LIBRARY_PATH,将libadd.so加入到路径中。
2.加载.so文件,调用函数。
dltest.c,参考man 3 dlopen 帮助文件中的例子。
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
int main(int argc, char **argv)
{
void *handle;
int (*add)(int,int);
char *error;
handle = dlopen ("libadd.so", RTLD_LAZY);
if (!handle) {
fprintf (stderr, "%s\n", dlerror());
exit(1);
}
dlerror(); /* Clear any existing error */
add = dlsym(handle, "add");
if ((error = dlerror()) != NULL) {
fprintf (stderr, "%s\n", error);
exit(1);
}
printf ("%d\n", add(3,5));
dlclose(handle);
return 0;
}
编译:
 gcc -rdynamic -o dltest dltest.c -ldl
执行dltest得到结果为8。


相关文档:

实战Linux Bluetooth编程(六) L2CAP编程实例

例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
 如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......

实战Linux Bluetooth编程 (七) SDP协议

Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......

linux服务器中常用的压缩工具命令

解压命令大全
gz 
解压1:gunzip FileName.gz 
解压2:gzip -d FileName.gz 
压缩:gzip FileName 
.tar.gz 
解压:tar zxvf FileName.tar.gz 
压缩:tar zcvf FileName.tar.gz DirName 
--------------------------------------------- 
.bz2 
解压1:bzip2 -d Fi ......

每日C(3.Linux常用C函数 内存控制篇)

内存控制篇
calloc
free
getpagesize
malloc
mmap
munmap
calloc(配置内存空间)
相关函数
malloc,free,realloc,brk
表头文件
#include <stdlib.h>
定义函数
void *calloc(size_t nmemb,size_t size);
函数说明
calloc()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号