linux中的动静链接库
生成静态库:
假如有文件 main.c、1.c、2.c 将1.c和2.c生成一个静态库的方法为,编写Makefile:
mylib.a:1.c 2.c
$(CC) -c $< # $<表示所有最新的依赖项,若没有旧的则是全部依赖项
ar crv libmy.a 1.o 2.o # 1.o 2.o为1.c和2.c生成的object文件
静态库的链接:
gcc -o myapp main.o -L./ -lmy # myapp为要生成的应用程序
-L 后跟的是自定义的库所在的位置,如果是系统库则不需要 -lmy中my是库文件名的后半部,也即库名,库文件名的命名规则为libNAME.a ,NAME为库名 如果链接多个库则用多个"-lNAME"参数。
动态库的生成:
gcc -shared -o libNAME.so 1.c 2.c #gcc会直接把1.c 2.c编译成object文件并合成名为
libNAME.so的动态库。
动态库的使用跟静态库一样,区别是静态库将代码加到了应用程序中,以后不再需要静态库,而动态库只是一个链接,应用程序每次运行都需要加载动态库。注意,在应用程序运行时没出现找不到库的问题,因为链接时是在系统库目录中(/usr/lib /usr/local/lib)查找库。所以需将自定义的动态库复制到系统库目录中,或使链接时能找到这个库。
相关文档:
例一:发送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 ......
1. 打开串口
与其他的关于设备编程的方法一样,在Linux下,操作、控制串口也是通过操作起设备文件进行的。在Linux下,串口的设备文件是/dev/ttyS0或/dev/ttyS1等。因此要读写串口,我们首先要打开串口:
char *dev = "/dev/ttyS0"; //串口1
int fd = open( dev, O_RDWR );
//| O_NOCT ......
1.svn:
~$ vi ~/.subversion/servers
[global]
http-proxy-host = xxx.xxx.xxx.xxx
http-proxy-port = xxxx
2.git
~$ wget http://www.meadowy.org/~gotoh/ssh/connect.c
~$ gcc -o connect connect.c
~$ sudo cp connect /usr/local/bin
~$ sudo vi /usr/local/bin/http-proxy-gw
#!/bin/sh
/usr/local/bin/con ......