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

linux lib 动态库

动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一点帮助。
1、动态库的编译
下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。
so_test.h:
#include <stdio.h>
#include <stdlib.h>
void test_a();
void test_b();
void test_c();
test_a.c:
#include "so_test.h"
void test_a()
{
    printf("this is in test_a...\n");
}
test_b.c:
#include "so_test.h"
void test_b()
{
    printf("this is in test_b...\n");
}
test_c.c:
#include "so_test.h"
void test_c()
{
    printf("this is in test_c...\n");
}
将这几个文件编译成一个动态库:libtest.so
$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so
2、动态库的链接
在1、中,我们已经成功生成了一个自己的动态链接库libtest.so,下面我们通过一个程序来调用这个库里的函数。程序的源文件为:test.c。
test.c:
#include "so_test.h"
int main()
{
    test_a();
    test_b();
    test_c();
    return 0;
}
l         将test.c与动态库libtest.so链接生成执行文件test:
$ gcc test.c -L. -ltest -o test
l         测试是否动态连接,如果列出libtest.so,那么应该是连接正常了
$ ldd test
l         执行test,可以看到它是如何调用动态库中的函数的。
3、编译参数解析
最主要的是GCC命令行的一个选项:
          -shared 该选项指定生成动态连接库(让连接器生成T类型的导出符号表,有时候也生成弱连接W类型的导出符号),不用该标志外部程序无法连接。相当于一个可执行文件
l         -fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式


相关文档:

实战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设备模型之input子系统详解

一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......

The Linux Printing HOWTO

The Linux Printing HOWTO http://www.resoo.org/docs/printing/printing-howto.txt
Grant Taylor <gtaylor+pht@picante.com>
v3.30, 19 November 1999
This is the Linux Printing HOWTO, a collection of information on how
to generate, preview, print and fax anything under Linux ......

linux目录结构及主要内容


“/”根目录部分有以下子目录:
/usr 目录包含所有的命令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个目录也包含你的Linux发行版本的主要的应用程序,譬如,Netscape。
/var 目录包含在正常操作中被改变的文件:假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等。
/hom ......

Linux下查看cpu类型、内存大小、硬盘大小类型等

http://blog.tianya.cn/blogger/post_show.asp?BlogID=2243487&PostID=21072119&idWriter=0&Key=0
Linux下查看cpu类型、内存大小、硬盘大小类型等 
CPU查看:
1、  # dmesg | grep CPU
  Initializing CPU#0
  CPU: Trace cache: 12K uops
  CPU: L1 I-cache: 0K, L1 D-cache: 16K
  CP ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号