免费注册 查看新帖 |

Chinaunix

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

[急]compaq true64平台,连接报错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-02 16:46 |只看该作者 |倒序浏览
迁移一个程序到compaq true64平台上,
编译没什么问题,连接的时候报错了。
有谁有在true64上编译C++程序的经验请不吝赐教。
万分感激。谢谢。


  1. cxx -D__USE_STD_IOSTREAM  -pthread -DTRUE64 -w -I. -I/usr/users/lxdev/public/include -Iinclude -I/usr/users/ora9i/precomp/public  -I/usr/users/ora9i/rdbms/demo -I/usr/users/ora9i/rdbms/public  -DNAMESPACE -I/usr/users/lxdev/include -shared  -o libftam.so src/ftam.o src/ftam_param.o -L/usr/users/lxdev/public/lib -lpublic -L/usr/users/ora9i/lib -lclntsh -lm -lc -ll -lrt -locci  -lpthread
  2. ld:
  3. Warning: Unresolved:
  4. std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::str(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)
  5. std::vector<int (*)(void*, char**, const char**, char**), std::allocator<int (*)(void*, char**, const char**, char**)> >::resize(unsigned long)
  6. _RWrwstd::_RWrb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int>, _RWrwstd::_RWselect1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int>, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > >::operator =(const _RWrwstd::_RWrb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int>, _RWrwstd::_RWselect1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int>, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allxxxxxxx>&)

复制代码

论坛徽章:
0
2 [报告]
发表于 2007-02-02 18:00 |只看该作者
没有人在true64上做过C++吗?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2007-02-02 18:44 |只看该作者
你把这个-D__USE_STD_IOSTREAM去掉试试。

论坛徽章:
0
4 [报告]
发表于 2007-02-02 19:18 |只看该作者
去掉的话编译就过不去。

  1. cxx: Error: /usr/lib/cmplrs/cxx/V6.5-033/include/cxx/sstream, line 58: #error
  2.           directive: "cannot include sstream -- define __USE_STD_IOSTREAM to
  3.           override default - see section 7.1.2 of the C++ Using Guide"
  4. #error "cannot include sstream -- define __USE_STD_IOSTREAM to override default - see section 7.1.2 of the C++ Using Guide"
  5. -^
复制代码

论坛徽章:
0
5 [报告]
发表于 2007-02-02 19:24 |只看该作者
再说这一行命令只是把已经编译好的目标文件连接起来。
用-D预定义的宏应该对连接没有影响吧。
谢谢关注

论坛徽章:
0
6 [报告]
发表于 2007-02-02 22:19 |只看该作者
看了半天没看懂,好像是说你的std namespace中的一堆函数没有,你是不是需要去掉那个宏,重新编译一下o文件再连接看看

论坛徽章:
0
7 [报告]
发表于 2007-02-02 23:38 |只看该作者
或者加上
using std;

论坛徽章:
0
8 [报告]
发表于 2007-02-03 21:00 |只看该作者
真BT,总算解决了。
原因如下,虽然现在用tru64的人不多,但是总会有人要用到,共享一下

cxx对摸板支持的不好,他先要编译成一大堆目标文件,在你执行编译命令的当前目录下建立一个
叫cxx_repository的目录,把这些目标文件放在下面,在连接的时候会将这些目标文件连接进去。


在编译我的project 的时候,我会先在$DP/public目录下编译公用代码,然后ar成静态库libpublic.a,
然后再到应用程序代码目录$DP/program下编译连接应用程序,这时候会连接libpublic.a,
ld在做连接的时候就去连接$DP/program/cxx_repository目录下的目标文件,但是这里面没有包含libpublic.a这部分的。
所以我把$DP/public/cxx_repository目录下的目标文件统统COPY到$DP/program/cxx_repository下,再进行连接,问题就解决了。


问题解决的路径:
1。先到网上查了好久,总算找到了一个CXX的比较完整的帮助。(真郁闷,到HP的网站上找了半天没找到)
共享一下http://h30097.www3.hp.com/cplus/ugu_index.html
看到了cxx_repository部分的描述。
2。使用cxx -v 选项将具体的ld命令行输出,观察到他去连接了cxx_repository目录下的目标文件。
3。COPY过去,搞定。

论坛徽章:
0
9 [报告]
发表于 2007-02-03 22:29 |只看该作者
补充一点
要是非要这么copy过来copy过去的也太土了。又仔细看了一下。
可以使用 -ptr 选项来指定cxx_repository这个目录,如果不使用-ptr选项指定目录,
编译器就默认默认是工作目录下的cxx_repository目录。

cxx -ptr $(MYRESPOSITORY)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP