免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4690 | 回复: 5
打印 上一主题 下一主题

AIX5下xlC编译静态库的问题 [复制链接]

论坛徽章:
8
白羊座
日期:2015-01-21 18:35:03巳蛇
日期:2015-02-03 17:30:37处女座
日期:2015-02-03 17:31:02羊年新春福章
日期:2015-02-03 17:31:21巨蟹座
日期:2015-02-05 16:01:06申猴
日期:2015-02-05 16:01:31摩羯座
日期:2015-02-05 16:01:41酉鸡
日期:2015-02-05 16:02:37
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-09-10 17:49 |只看该作者 |倒序浏览
OS:AIX Version 5
CC:xlC Version 6

一个日志库,源文件及头文件分别为log.cpp、log.h
编译为静态库的指令如下:
  1. xlC -G -brtl -berok -bnoentry -bexpall -g -DIBM_AIX -I../include -o ../lib/liblog.a log.cpp
复制代码

可以顺利的生成文件../lib/liblog.a,查看该文件:
  1. $ file ../lib/liblog.a
  2. ../lib/liblog.a: executable (RISC System/6000) or object module not stripped
复制代码


创建一个test.cpp文件对该静态库进行测试,指令如下:
  1. xlC -g -DIBM_AIX test.cpp -I../include -L../lib -llog
复制代码

编译结果如下:
  1. 1540-5215 (W) No licenses available. Contact your program supplier to add additional users. Compilation will proceed shortly.
  2. ld: 0711-317 ERROR: Undefined symbol: .LOG::LOG()
  3. ld: 0711-317 ERROR: Undefined symbol: .LOG::~LOG()
  4. ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
复制代码


程序test.cpp很简单,就是声明一个LOG类实例,执行一些写日志的操作而已。

不明白怎么回事,请大虾赐教!

论坛徽章:
0
2 [报告]
发表于 2005-09-12 14:05 |只看该作者

AIX5下xlC编译静态库的问题

这个应该是没有license吧?

论坛徽章:
0
3 [报告]
发表于 2005-09-12 21:16 |只看该作者

AIX5下xlC编译静态库的问题

你生成的是动态库阿,生成静态库用ar

论坛徽章:
8
白羊座
日期:2015-01-21 18:35:03巳蛇
日期:2015-02-03 17:30:37处女座
日期:2015-02-03 17:31:02羊年新春福章
日期:2015-02-03 17:31:21巨蟹座
日期:2015-02-05 16:01:06申猴
日期:2015-02-05 16:01:31摩羯座
日期:2015-02-05 16:01:41酉鸡
日期:2015-02-05 16:02:37
4 [报告]
发表于 2005-09-14 10:09 |只看该作者

AIX5下xlC编译静态库的问题

原帖由 "robinliu76"]这个应该是没有license吧?[/quote 发表:

是的,这个提示是没有license所致。
[quote]1540-5215 (W) No licenses available. Contact your program supplier to add additional users. Compilation will proceed shortly.

论坛徽章:
8
白羊座
日期:2015-01-21 18:35:03巳蛇
日期:2015-02-03 17:30:37处女座
日期:2015-02-03 17:31:02羊年新春福章
日期:2015-02-03 17:31:21巨蟹座
日期:2015-02-05 16:01:06申猴
日期:2015-02-05 16:01:31摩羯座
日期:2015-02-05 16:01:41酉鸡
日期:2015-02-05 16:02:37
5 [报告]
发表于 2005-09-14 10:19 |只看该作者

AIX5下xlC编译静态库的问题

原帖由 "GongWithTheWind"]你生成的是动态库阿,生成静态库用ar[/quote 发表:

你好,ar的方式我也试过,也有问题。
不过今天又试了试,居然成功了,呵呵,看来是有贵人相助啊

过程如下:
[quote]
# 生成二进制目标文件.o
xlC -G -brtl -berok -bnoentry -bexpall -g -DIBM_AIX -I../include -I/usr/include -o ../obj/LOG.o -c LOG.cpp

# 生成静态库目标文件.a
ar -cr liblog.a ../obj/LOG.o

# 编译生成可执行的测试程序a.out
xlC -g -DIBM_AIX test.cpp -I../include -L/usr/lib -L../lib -lpthread -llog

论坛徽章:
8
白羊座
日期:2015-01-21 18:35:03巳蛇
日期:2015-02-03 17:30:37处女座
日期:2015-02-03 17:31:02羊年新春福章
日期:2015-02-03 17:31:21巨蟹座
日期:2015-02-05 16:01:06申猴
日期:2015-02-05 16:01:31摩羯座
日期:2015-02-05 16:01:41酉鸡
日期:2015-02-05 16:02:37
6 [报告]
发表于 2005-09-17 13:48 |只看该作者

AIX5下xlC编译静态库的问题

今天又遇到了一个麻烦事儿,就是类方法做线程函数的问题。
在类LOG的构造函数LOG()中创建一线程,对应线程函数为类LOG的静态方法GetTimeThread,也传入了this指针作为线程函数参数,但是奇怪的发现线程函数只执行了一次。函数内容如下:

  1. void *LOG::GetTimeThread(void *arg)
  2. {
  3.         printf("●●● Now, in the get time thread...\n");

  4.         while(1)
  5.         {
  6.                 GetCurrentTime((LOG *)arg);

  7.                 Sleep(1);
  8.         }

  9.   pthread_exit(NULL);

  10.   return (void *)NULL;
  11. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP