免费注册 查看新帖 |

Chinaunix

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

编译问题?关于ACE的 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-05 14:12 |只看该作者 |倒序浏览
环境
# uname -a
FreeBSD  7.0-RELEASE FreeBSD 7.0-RELEASE #0: Sun Feb 24 10:35:36 UTC 2008     root@driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
# gcc -v
Using built-in specs.
Target: amd64-undermydesk-freebsd
Configured with: FreeBSD/amd64 system compiler
Thread model: posix
gcc version 4.2.1 20070719  [FreeBSD]


用/usr/posts/devel/ace安装的
# pkg_info|grep ace
ace-5.5.2_2         The Adaptive Communication Environment for C++



程序源码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "ace/ACE.h"
#include "ace/OS.h"
#include "ace/Message_Block.h"




int main(int argc , char * argv[])
{
    ACE_Message_Block *head = new ACE_Message_Block(BUFSIZ);
    ACE_Message_Block *mblk = head;
    
    for(;;)
    {
        ssize_t nbytes = ACE::read_n(ACE_STDIN , mblk->wr_ptr(),mblk->size());
        if(nbytes <= 0)            
        {
            printf("%s:%d\n" , __FILE__ , __LINE__);
            break;
        }
        
        mblk->wr_ptr(nbytes);
        printf("str = %s\n" , mblk->rd_ptr());
        
        mblk->cont(new ACE_Message_Block(BUFSIZ) );
        mblk = mblk->cont();
    }
    

//    ACE::write_n(ACE_STDOUT , head );

    
    for(mblk = head ; mblk != 0; mblk=mblk->cont())
    {
        ACE::write_n(ACE_STDOUT , mblk->rd_ptr() , mblk->length() );
    }
    
    head->release();    
    
    return EXIT_SUCCESS;
}




编译命令
g++ -o list list.cpp -I /usr/local/include/ -L /usr/local/lib/libACE.a



出错消息
/var/tmp//ccsKes3g.o(.text+0x45): In function `main':
: undefined reference to `ACE_Time_Value::max_time'
/var/tmp//ccsKes3g.o(.text+0x4e): In function `main':
: undefined reference to `ACE_Time_Value::zero'
/var/tmp//ccsKes3g.o(.text+0x83): In function `main':
: undefined reference to `ACE_Message_Block::ACE_Message_Block(unsigned long, int, ACE_Message_Block*, char const*, ACE_Allocator*, ACE_Lock*, unsigned long, ACE_Time_Value const&, ACE_Time_Value const&, ACE_Allocator*, ACE_Allocator*)'
/var/tmp//ccsKes3g.o(.text+0x15f): In function `main':
: undefined reference to `ACE_Time_Value::max_time'
/var/tmp//ccsKes3g.o(.text+0x16: In function `main':
: undefined reference to `ACE_Time_Value::zero'
/var/tmp//ccsKes3g.o(.text+0x19d): In function `main':
: undefined reference to `ACE_Message_Block::ACE_Message_Block(unsigned long, int, ACE_Message_Block*, char const*, ACE_Allocator*, ACE_Lock*, unsigned long, ACE_Time_Value const&, ACE_Time_Value const&, ACE_Allocator*, ACE_Allocator*)'
/var/tmp//ccsKes3g.o(.gnu.linkonce.t._ZN3ACE6read_nEiPvmPm+0x27): In function `ACE::read_n(int, void*, unsigned long, unsigned long*)':
: undefined reference to `ACE_OS::read_n(int, void*, unsigned long, unsigned long*)'
/var/tmp//ccsKes3g.o(.gnu.linkonce.t._ZN3ACE7write_nEiPKvmPm+0x27): In function `ACE::write_n(int, void const*, unsigned long, unsigned long*)':
: undefined reference to `ACE_OS::write_n(int, void const*, unsigned long, unsigned long*)'



我试过同样的代码和编译命令在Cent OS4.5上用g++ -o list list.cpp   -l ACE 就可以了

[ 本帖最后由 chunyv 于 2008-9-5 14:24 编辑 ]

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
2 [报告]
发表于 2008-09-05 14:24 |只看该作者
Cent OS4.5 的g++版本是多少?
没用过ace,/usr/local/lib/libACE.a 有 /usr/local/lib/libACE.so 吗?

论坛徽章:
0
3 [报告]
发表于 2008-09-05 14:38 |只看该作者
centos 的gcc是 3.4.6

两个系统的ace的头文件都在/usr/local/include/ace下面
库文件都在 /usr/local/lib/  
/usr/local/lib/libACE-5.5.2.so
/usr/local/lib/libACE.a
/usr/local/lib/libACE.la
/usr/local/lib/libACE.so
/usr/local/lib/libACE.so.5
/usr/local/lib/libACEXML-5.5.2.so
/usr/local/lib/libACEXML.a
/usr/local/lib/libACEXML.la
/usr/local/lib/libACEXML.so
/usr/local/lib/libACEXML.so.5
/usr/local/lib/libACEXML_Parser-5.5.2.so
/usr/local/lib/libACEXML_Parser.a
/usr/local/lib/libACEXML_Parser.la
/usr/local/lib/libACEXML_Parser.so
/usr/local/lib/libACEXML_Parser.so.5
/usr/local/lib/libACEXML_XML_Svc_Conf_Parser-5.5.2.so
/usr/local/lib/libACEXML_XML_Svc_Conf_Parser.a
/usr/local/lib/libACEXML_XML_Svc_Conf_Parser.la
/usr/local/lib/libACEXML_XML_Svc_Conf_Parser.so
/usr/local/lib/libACEXML_XML_Svc_Conf_Parser.so.5
/usr/local/lib/libACE_HTBP-5.5.2.so
/usr/local/lib/libACE_HTBP.a
/usr/local/lib/libACE_HTBP.la
/usr/local/lib/libACE_HTBP.so
/usr/local/lib/libACE_HTBP.so.5
/usr/local/lib/libACE_RMCast-5.5.2.so
/usr/local/lib/libACE_RMCast.a
/usr/local/lib/libACE_RMCast.la
/usr/local/lib/libACE_RMCast.so
/usr/local/lib/libACE_RMCast.so.5
/usr/local/lib/libACE_SSL-5.5.2.so
/usr/local/lib/libACE_SSL.a
/usr/local/lib/libACE_SSL.la
/usr/local/lib/libACE_SSL.so
/usr/local/lib/libACE_SSL.so.5
/usr/local/lib/libACE_TMCast-5.5.2.so
/usr/local/lib/libACE_TMCast.a
/usr/local/lib/libACE_TMCast.la
/usr/local/lib/libACE_TMCast.so
/usr/local/lib/libACE_TMCast.so.5

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
4 [报告]
发表于 2008-09-05 14:45 |只看该作者
原帖由 chunyv 于 2008-9-5 14:38 发表
centos 的gcc是 3.4.6

两个系统的ace的头文件都在/usr/local/include/ace下面
库文件都在 /usr/local/lib/  


-_-; 我的意思是:如果有.so,你试试 -l....ACE.so。而不是问你有没有这个东西。。。所以用不着把所有的列出来,我没必要知道
或者-L/usr/local/lib -lACE

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
5 [报告]
发表于 2008-09-05 14:49 |只看该作者
原帖由 chunyv 于 2008-9-5 14:12 发表
g++ -o list list.cpp -I /usr/local/include/ -L /usr/local/lib/libACE.a...


忽然发现。。。有这样引用链接库的吗?-L ? -l ?

论坛徽章:
0
6 [报告]
发表于 2008-09-05 14:51 |只看该作者
搞定了

g++ -o list list.cpp -I/usr/local/include/ -L/usr/local/lib -l ACE


还是不行,需要这样

g++ -o list list.cpp -I/usr/local/include/ -lpthread -L/usr/local/lib -l ACE


搞不清楚为什么linux可以不需要这个-lpthread ....
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP