免费注册 查看新帖 |

Chinaunix

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

请教一个 gcc 的问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-25 15:53 |只看该作者 |倒序浏览
有文件如下:
//a.hxx
#define XXX_WEAK_ALIAS( __symbol__)  XXX_ATTRIB_WEAK XXX_ALIAS(__symbol__)

#define XXX_ALIAS(__symbol__)  __attribute__ ((alias(__symbol__)))

//b.hxx
#define XXX_ATTRIB_WEAK  __attribute__ ((weak))

//c.cxx
externC int
abcde( int a )  XXX_WEAK_ALIAS("_abcde";
。。。
_abcde(int a)
{
.........
}

请教,关于宏 XXX_WEAK_ALIAS 应该怎么理解?? YACC/LEX 是怎么处理它的??

论坛徽章:
0
2 [报告]
发表于 2003-02-26 09:36 |只看该作者

请教一个 gcc 的问题!

up

论坛徽章:
0
3 [报告]
发表于 2003-02-26 12:21 |只看该作者

请教一个 gcc 的问题!

( __symbol__)
等名字应该是GCC编译器自己使用的

如果不是研究GCC编译器的话
这些应该不是很重要

论坛徽章:
0
4 [报告]
发表于 2003-02-26 12:49 |只看该作者

请教一个 gcc 的问题!

无双  !
谢谢你的回应  :)

其实是的,事实上我在做一个嵌入式os.(ecos), 碰到一个问题,就是编译libc的时候 出现了问题,
在一个文件中出现:
externC int
abcde( int a ) XXX_WEAK_ALIAS("_abcde";
。。。
_abcde(int a)
{
.........
}
但是,arm-elf-gcc无法编译通过!


arm-elf-gcc -c  -I/cygdrive/C/myecos/x_install/include -I/cygdrive/C/ecos/packages/language/c/libc/v1_3_1 -I/cygdrive/C/ecos/packages/language/c/libc/v1_3_1/src -I/cygdrive/C/ecos/packages/language/c/libc/v1_3_1/tests -I. -I/cygdrive/C/ecos/packages/language/c/libc/v1_3_1/src/ctype/ -mcpu=arm7tdmi -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority -Wp,-MD,src/ctype/isalnum.tmp -o src/ctype/language_c_libc_isalnum.o /cygdrive/C/ecos/packages/language/c/libc/v1_3_1/src/ctype/isalnum.cxx
/cygdrive/C/ecos/packages/language/c/libc/v1_3_1/src/ctype/isalnum.cxx:69: `int
   isalnum(int)' defined both normally and as an alias
make[1]: *** [src/ctype/isalnum.o.d] Error 1
make[1]: Leaving directory `/cygdrive/c/myecos/x_build/language/c/libc/v1_3_1'
make: *** [build] Error 2

请教!

论坛徽章:
0
5 [报告]
发表于 2003-02-26 12:52 |只看该作者

请教一个 gcc 的问题!

对不起!
原函数应该是这样的:

//isalnum.cxx

externC int
isalnum ( int c )   CYGPRI_LIBC_WEAK_ALIAS("_isalnum";

// FUNCTIONS

int
_isalnum ( int c )
{
//    return ( _isalpha(c) || _isdigit(c) );
} // _isalnum()

论坛徽章:
0
6 [报告]
发表于 2003-02-26 15:08 |只看该作者

请教一个 gcc 的问题!

isalnum(int)' defined both normally and as an alias

那改成使用_isalnum看看怎样

论坛徽章:
0
7 [报告]
发表于 2003-02-26 16:36 |只看该作者

请教一个 gcc 的问题!

不行啊!
错误更多,除了上面出现的错误,还有:重定义 !

论坛徽章:
0
8 [报告]
发表于 2003-02-27 09:18 |只看该作者

请教一个 gcc 的问题!

那你写一个小的测试程序看看

使用这个函数
饮食相同的头文件

论坛徽章:
0
9 [报告]
发表于 2003-02-27 15:35 |只看该作者

请教一个 gcc 的问题!

没用!效果还是一样!我想知道,使用这些符号(weak alias )是不是需要在编译的时候使用特殊的开关??

论坛徽章:
0
10 [报告]
发表于 2003-02-27 16:00 |只看该作者

请教一个 gcc 的问题!

那你那有没有arm的开发资料
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP