Chinaunix首页 | 论坛 | 博客

发布时间:2017-08-26 12:12:05

最近在AIX环境下,使用esql编译ec/ecpp形成的.o和xlc/xlC编译普通c/cpp形成的.o进行连接,运行时发现不同.o调用传递struct结构参数访问会有错位。排除了程序本身的原因,最后发现是AIX下esql和xlc编译时默认结构对齐编译参数设置是不同的。esql编译时,可以用esql -v查看,发现-qalign=nature,而根据xlc帮助,默.........【阅读全文】

阅读(110) | 评论(0) | 转发(0)

发布时间:2017-08-05 20:24:13

上一篇实现,是统计了每一次函数调用的层次关系和耗时。如果在函数调用比较多的情况下,更关心的是减少输出,只需要总计的耗时即可。另外如果是后台程序,输出到文件会更好。因此,对程序做了改进。当设置TRACELOG环境变量,则输出到这个环境变量指定的文件中。如果设置了DETAILF,则会输出调用层次关系和每一次的耗.........【阅读全文】

阅读(110) | 评论(1) | 转发(0)

发布时间:2017-06-29 08:15:20

    示例程序整体结构如下。    源程序:ps.c,cm.c,ps_tran.c,cm_tran.c(以上分版本1,版本2),main.c,makefile,aix,makefile.linux。    目标程序:libps.so,libcm.so,libps_tran.so,libcm_tran.so(以上分版本1,版本2),main。 &n.........【阅读全文】

阅读(100) | 评论(0) | 转发(0)

发布时间:2017-05-25 00:42:35

在AIX中,xlc编译器有个选项-qfunctrace,使用此选项编译的程序,自动会在每个函数的入口出口处调用以下自定义函数。extern "C" void__func_trace_enter(const char * const proc_name,                   const c.........【阅读全文】

阅读(100) | 评论(0) | 转发(0)

发布时间:2017-05-23 06:36:35

    世界上唯一不变的是变化,对于动态连接库更是如此。动态库天生为方便程序的更新而设计,只需要替代库文件,无需重新编译主程序,即可运行更新后的版本。另外,动态库是多应用共享的,多个程序使用同一个库,那么库只会加载一份。    但是,现实往往不这么简单。既然动态库.........【阅读全文】

阅读(120) | 评论(0) | 转发(0)

发布时间:2017-05-18 07:17:12

unix平台下,动态连接库的使用有两种方式,link方式和dlopen方式。需要设置LD_LIBRARY_PATH作为查找路径(低版本AIX使用LIBPATH)。link方式是程序启动时加载所有编译时连接的动态库,直到程序结束也不会关闭。dlopen方式是在运行中按照参数指定的方式加载动态库,并可以使用dlclose函数关闭,直到下次再使用dlopen重新加.........【阅读全文】

阅读(100) | 评论(0) | 转发(0)

发布时间:2017-05-12 00:15:58

在C/C++程序中,全局和静态变量,编译器会默认初始化为0。而局部变量是没有默认值的,分配到的内存空间保留原有无意义的值。在很多老旧代码中,初始化和使用都不规范,导致非常容易出现异常情况。为了降低异常的概率,通过xlc的编译参数,可以让局部变量也进行默认值初始化动作。参考xlc的帮助:&nbs.........【阅读全文】

阅读(150) | 评论(0) | 转发(0)

发布时间:2017-05-12 00:07:33

在EXEC SQL中,如果SQL语句出现了“//”符号,那么会导致后面一直到“;”结尾的SQL语句都被忽略,而不止当前行。这样往往会出乎程序员的意料。例如以下例子程序t1.ec。int main(){        EXEC SQL UPDATE vyktd .........【阅读全文】

阅读(90) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册