- 博客(19)
- 收藏
- 关注
原创 C++编写的SO 并被调用过程
makefile:all: g++ map.cpp -o map.so -shared g++ main.cpp -o main -ldlclean: rm -rf main rm -rf map.so map.cpp#include #include #include using namespace std;extern "C"{ void map(std::str
2007-08-31 10:41:00 1165
原创 自定义so的引用
1、在编译的时候用到了自定义的mapreduce库g++ -o prog -L. -lmapreduce main.cpp 2、ldd prog 可以查看出系统能不能找到你的mapreduce库3、如果查不到,有三种方法来解决这个问题 把库文件放到/usr/lib中 使用dlopen函数组 修改定义库文件所在目录的环境变量
2007-08-30 14:20:00 664
原创 so的Makefile.am的编写 Makefile的生成
Makefile.amAUTOMAKE_OPTIONS = foreignINCLUDES = -I.sbin_PROGRAMS = libmapreduce.so libmapreduce_so_SOURCES = map.cpp libmapreduce.so: map.o g++ -o libmapreduce.so -shared map.o map.o :map.cpp
2007-08-30 14:16:00 3271 1
原创 查看程序运行失败后core文件给出的信息
1、如果没有core文件生成可以如下配置: ulimit -c 结果可能是0;用ulimit -c unlimited命令开启2、 查看core文件给出的信息 #include int main() { char *p = NULL; char *q = "123"; memcpy(p,q,4);
2007-08-29 14:38:00 1679
原创 _init _fini 函数的使用方法
可以通过"objdump -S 程序名" 命令来查看ELF中的汇编代码,可以找到这两个函数_init _fini 函数是给编译器使用的,可以通过下面两个方法进行使用 newtest.c#include __attribute ((constructor)) void GNUC_init(void){ printf("%s/n", __func__);}__attrib
2007-08-29 14:32:00 4442
原创 数据提取 “1,123,123,52” 这种信息存储方式的分离
#include #define MAXITEMS 10int main(){ char ca[] = "1,23,"; int ia[MAXITEMS] = {0}; char *pc = ca; int i=0; while(strstr(pc,",")) { ia[i] = atoi(pc);
2007-08-22 16:41:00 701
原创 data[0] 的妙用
int data[0];printf("sizeof data[0] is %d/n",sizeof(data)); 结果:sizeof data[0] is 0通过上面的例子可以得出一个结论 这么定义一个数组其意义就是定义一个别名 在linux的经典应用:skb 中的data举例://下面的结构体定义了两种TLV#pragma pack(1)struct STUT
2007-08-22 16:36:00 5698
原创 dll / class 运行时装载
DLL装载步骤:(缺页中断时才真正的加载入内存空间)1、调入dll文件分配内存2、确定程序入口点(分配入口指针)对加密的.class文件:1、用类库加载器ClassLoader,把类文件当做数据流读入到一个byte[]中2、对这个 byte[]进行解密处理后(没加密当然就不用做这步了)3、再通过 byte[] 生成一个类4、分配内存5、确定程序入口点
2007-08-21 15:28:00 762
原创 linux GCC命令输出的重定向
#gcc -o test test.c &>filename"&"在这里代表标准输出和标准错误,这里无论是正常输出还是错误信息都写到filename中了。gcc -o test test.c > result 2>&1重新定义标准输入,输出,和错误的文件标识符重新定义文件标识符可以用i>&j命令,表示把文件标识符i重新定向到j,你可以把"&"理解为"取地址"
2007-08-20 17:53:00 3611
原创 C++ Singleton模版
#ifndef CTEMPLETESINGLETON_H_#define CTEMPLETESINGLETON_H_templateclass CTempleteSingleton{public: static T* Instance() { if(!pInstance_) pInstance_=new T; return pInst
2007-08-20 16:28:00 805
原创 在main函数前后执行代码的方法
#include#includeusing namespace std;struct Init_Exit{ Init_Exit(){printf("Hi/n");} ~Init_Exit(){printf("Bye/n");}};struct Init_Exit a;int main(){ cout return 0;} 这样就可以执行你需要执行的代码
2007-08-20 10:30:00 906
原创 GCC lib分类及优缺点
静态函数库(static libraries) 静态函数库是在程序执行前就加入到目标程序中去了 静态函数库实际上就是简单的一个普通的目标文件的集合,一般来说习惯用".a"作为文件的后缀。 可以用ar这个程序来产生静态函数库文件。Ar 是archiver的缩写。 静态库函数允许程序员把程序link起来而不用重新编译代码,节省了重新编译代码的时间 静态函数库对开发者来说还是很有用的,例如你想把自己提
2007-08-16 22:08:00 4076
原创 eclipse CDT 怎样使用另外一台机器上的cygwin
问题产生的原因:由于cygwin的安装太慢,cygwin太大,所以不想在新的机器上安装,想使用现有的我将cygwin影射到另外一台机器上作为一个驱动器使用,在path中加入了Z:/bin;但是在编译helloworld时出现:**** Build of configuration Debug for project Hello ******** Internal Builde
2007-08-15 19:20:00 836
原创 js DOM 内存泄露 要点
1、可以通过Drip-0.5来测 JSVM2的泄漏 http://www.script8.com/download/drip.rar2、看代码中是不是存在 循环引用(Circular References) — IE浏览器的COM组件产生的对象实例和网页脚本引擎产生的对象实例相互引用,就会造成内存泄漏。这也是Web页面中我们遇到的最常见和主要的泄
2007-08-15 14:20:00 1378
原创 面试题 自解
1、输入一个n ,然后在屏幕上打印出NxN 的矩阵! 例如,输入一个3,则 1 2 3 8 9 4 7 6 5 输入一个4,则 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 #include //下面是初始化数组的当前层的四条边的数字void initOutLayer(int n,int *p,int numBegi
2007-08-07 15:09:00 655
原创 linux精确到微妙的计时简单实现
Linux 内核具有一个名为 jiffies 的全局变量,它代表从机器启动时算起的时间滴答数。这个变量最初被初始化为 0,每次时钟中断时都会加 1。您可以使用 get_jiffies_64 函数来读取 jiffies 的值,然后使用 jiffies_to_msecs 将其换算成毫秒或使用 jiffies_to_usecs 将其换算成微秒。jiffies 的全局定义和相关函数是在 ./linux/i
2007-08-06 14:20:00 2563
原创 linux开机流程 自定义模块的加载
1、开机执行流程 加载 BIOS 的硬件信息; 读取 MBR 的 Kernel Loader (亦即是 lilo, grub, spfdisk 等等)开机信息; 加载 Kernel 的操作系统核心信息; Kernel 执行 init 程序并取得 run-level 信息(这里就是加载点,在/etc/rc.d/下添加脚本) init
2007-08-03 10:37:00 1123
原创 automake步骤
目的: Makefile.am --->Makefile步骤:autoscan&&aclocal&&autoconf&&automake --add-missing &&./configure注释:这里可以使用选项--adding-missing让automake自动添加一些必要的脚本文件。1、由你的源文件通过autoscan命令生成configure.scan文件,然后修改confi
2007-08-01 13:32:00 1269
原创 linux 环境变量的设定
1、 echo $CVSROOT 用来显示CVSROOT的内容2、 export CVSROOT=:pserver:xuang@172.16.1.11:/home/cvsroot 用来设定CVSROOT,但是下次重起还要设定3、 pico -w /etc/profile pico是一个文本编辑器,而-w选项关闭了长行回绕功能。export CVSROOT=:pserver:x
2007-08-01 12:39:00 1227
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人