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

Linux下编译动态库,静态库,以及调用

so_test.h:
#include
#include
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_a.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
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
最主要的是GCC命令行的一个选项:
-shared
该选项指定生成动态连接库(让连接器生成T类型的导出符号表,有时候也生成弱连接W类型的导出符号),不用该标志外部程序无法连接。相当于一个可执行文件
l
-fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真
正代码段共享的目的。
l -L.:表示要连接的库在当前目录中
l -ltest:编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称
l LD_LIBRARY_PATH:这个环境变量指示动态连接器可以装载动态库的路径。
最后. 输出库的路径,或者拷贝到/lib目录下
export LD_LIBRARY_PATH=.  // 老婆大人告诉俺的
执行  ./test
搞定
静态:
先编译成.o
gcc -c test_a.c test_b.c test_c.c
然后用ar命令
ar -r libtest.a test_a.o test_b.o test_c.o


相关文档:

Linux iptable文档

总览
用iptables -ADC 来指定链的规

,-A添加 -D删除 -C 修改
iptables - [RI] chain rule num rule-specification[option]
用iptables - RI 通过规则的顺序指定
iptables -D chain rule num[option]
删除指定规则
iptables -[LFZ] [chain][option]
用iptables -LFZ 链名 [选项]
iptables -[NX] chain
用 -NX ......

linux下vi与vim编辑器的区别及使用方法

vi与vim一样都是编辑器,不同的是vim更高级一些,可以理解是vi的高级版本。vi就像Windows中的计事本,而vim则可以算的上是
office中的word。vi主要用来编辑一些文件,vim是程序员的好工具。好的。。。。下面在介绍一下vi的使用。。。。。。
    1.
使用vi进入一般模式
[root@linux ~]# vi test.tx ......

DIY:自己动手做一个迷你 Linux 系统

http://www.ibm.com/developerworks/cn/linux/embed/diy/
DIY:自己动手做一个迷你 Linux 系统
文档选项
<tr valign="top"><td width="8"><img alt="" height="1" width="8" src="//www.ibm.com/i/c.gif"/></td><td width=&quo ......

linux下的ELF文件分析

from:http://www.dzjs.net/html/qianrushixitong/2008/0509/3125.html
1 引言
    ELF(Executable and Linkable Format)即可执行连接文件格式,是Linux,SVR4和Solaris2.0默认的目标文件格式,目前标准接口委员会TIS已将ELF标准化为一种可移植的目标文件格式,运行于32-bit Intel体系微机上,可与多种操作 ......

linux下C语言多线程编程实例

学东西,往往实例才是最让人感兴趣的,老是学基础理论,不动手,感觉没有成就感,呵呵。
   下面先来一个实例。我们通过创建两个线程来实现对一个数的递加。
或许这个实例没有实际运用的价值,但是稍微改动一下,我们就可以用到其他地方去拉。
下面是我们的代码:
/*thread_example.c : c multiple thread p ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号