LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 599|回复: 2

请问这是什么错误?

[复制链接]
发表于 2005-11-2 17:50:11 | 显示全部楼层 |阅读模式
我在编译uClib库的时候,进入到/libc/misc/assert/目录的时候发生如下错误,这个目录下就一个__assert.c文件,文件内就一个__assert函数,所做的事情就是打印一些错误信息,然后abort,我把函数内的所有内容都注掉了,还是出现这样的错误,请问这是什么错误,会是什么原因造成的。又或者不是编译这个文件的时候发生的!

  1. /tmp/ccRIrWGE.s: Assembler messages:
  2. /tmp/ccRIrWGE.s:8: Error:
  3. parse error Input text was `@'

  4. /tmp/ccRIrWGE.s:8: Error:
  5. Parse error.

  6. /tmp/ccRIrWGE.s:11: Error:
  7. parse error Input text was `@'

  8. /tmp/ccRIrWGE.s:11: Error:
  9. Parse error.
复制代码
 楼主| 发表于 2005-11-3 11:38:09 | 显示全部楼层
问题找到了,还请高手指点!
造成这种错误的原因是编译选项中加了-fPIC,google了一下,这个选项的作用是生成“位置无关的代码”,“x86架构的处理器都是通过ebx寄存器操作的”(没明白这句话的意思,是在ebx寄存器放一个基址,然后根据这个基址偏移?而我的处理器只是一个DSP,不知道通过什么操作的!),“要生成的.so格式的库文件必须加此选项”(我生成的只是.o格式的,不用这个选项是不是可以?)。
btw:为什么我加了这个选项就出现上面所示的错误呢?是一些条件不符合,还是别的什么原因!这几天版主也不来了!
回复 支持 反对

使用道具 举报

发表于 2005-11-3 17:57:32 | 显示全部楼层
Post by haohao_h
“x86架构的处理器都是通过ebx寄存器操作的”(没明白这句话的意思,是在ebx寄存器放一个基址,然后根据这个基址偏移?而我的处理器只是一个DSP,不知道通过什么操作的!),

嗯,ebx 内存放GOT(Global Offset Table)的地址,然后对其他变量的引用将以此为基址进行偏移.
DSP 我也不熟.


“要生成的.so格式的库文件必须加此选项”(我生成的只是.o格式的,不用这个选项是不是可以?)。

要生成.so库,自然这个选项是少不了的.至于其他地方,有可能有自己的需求.

btw: fPIC 是编译的选项,不是链接的选项(即是生成.o时的有效选项)

btw:为什么我加了这个选项就出现上面所示的错误呢?是一些条件不符合,还是别的什么原因!

一般使用 -fPIC 不会有什么问题.
但是,看你给的错误貌似跟'@'符号有关.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表