Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 由于“错误”,编译失败;位移必须大于或等于-32768且小于或等于32767“;用g++;aix6.1上的4.6.1_C++_Unix_G++_Aix - Fatal编程技术网

C++ 由于“错误”,编译失败;位移必须大于或等于-32768且小于或等于32767“;用g++;aix6.1上的4.6.1

C++ 由于“错误”,编译失败;位移必须大于或等于-32768且小于或等于32767“;用g++;aix6.1上的4.6.1,c++,unix,g++,aix,C++,Unix,G++,Aix,我正在尝试使用汇编程序版本6.1在aix6.1上用g++4.6.1编译c代码 由于以下原因,编译失败:- line 3954495: 1252-171 The displacement must be greater than or equal to -32768 and less than or equal to 32767. line 3955281: 1252-171 The displacement must be greater than or equal to -32

我正在尝试使用汇编程序版本6.1在aix6.1上用g++4.6.1编译c代码

由于以下原因,编译失败:-

line 3954495: 1252-171 The displacement must be greater than or equal to
    -32768 and less than or equal to 32767.
line 3955281: 1252-171 The displacement must be greater than or equal to
    -32768 and less than or equal to 32767.
line 3955395: 1252-171 The displacement must be greater than or equal to
    -32768 and less than or equal to 32767.
line 3955401: 1252-171 The displacement must be greater than or equal to
    -32768 and less than or equal to 32767.
我使用以下选项进行编译:-

g++ -o tcl-int-cln.o -maix64 -bbigtoc -c tcl-int-cln.C
我在aix5.3上使用gcc4.0.2编译了相同的文件。它工作得很好

当您试图使用g++编译大文件时,通常会发生这种情况。我给出了一个选项,但问题仍然存在。这是汇编程序的问题吗

有人能解释一下这个问题吗?或者是gcc错误还是aix问题

有解决办法吗



谢谢。

自GCC 2.95以来。GCC不能处理大的输入;然后它将汇编
ld r4,X(r3)
指令(相对载荷、位移
X
),其中
X
大于16位。这是不允许的,因为GCC 2.95。GCC不能处理大的输入;然后它将汇编
ld r4,X(r3)
指令(相对载荷、位移
X
),其中
X
大于16位。开机时不允许这样做。

尝试将
-Wl,-bbigtoc
添加到编译器标志中。如果不起作用,请尝试将
-mminimal toc
添加到编译器标志中。

尝试将
-Wl,-bbigtoc
添加到编译器标志中。如果这不起作用,请尝试添加
-mminimal toc

我使用的是GCC,因此出现了此编译错误。添加“-mcmodel=large”为我修复了它。

我使用的是GCC,因此出现了这个编译错误。添加“-mcmodel=large”为我解决了这个问题。

显然,有些东西被限制在有符号16位整数的范围内。然而,在没有看到源代码的情况下,很难知道“某物”是什么……C代码中是否有内联asm?@Lindydancer:这是一个大文件,很难将代码粘贴到这里。你能告诉我一些调试技术或者需要一些其他信息吗?有时数据类型的大小因操作系统而异。从我在google上看到的情况来看,这是一个gcc错误,你需要将源文件拆分成更小的文件。显然,某些文件的范围仅限于带符号的16位整数。然而,在没有看到源代码的情况下,很难知道“某物”是什么……C代码中是否有内联asm?@Lindydancer:这是一个大文件,很难将代码粘贴到这里。你能告诉我一些调试技术或者需要一些其他信息吗?有时数据类型的大小取决于操作系统。从我在谷歌上看到的,这是一个gcc错误,你需要将源文件拆分成更小的文件。哇,一条错误消息,真是太棒了。上次我看到这样的错误不是在gcc中,而是另一个工具链,结果是它实际上屏蔽了底部16位,并将其用作置换。调试花了一段时间,特别是因为这是我第一份工作的第二周。耶,我能理解。当您的函数超过32K时,原始的K&R编译器(at&T)也有类似的静默问题。当然,您不能将这些bug简化为一个小的测试示例;)超过32k的功能在当时可能不是一个高风险。我的错误发生在整个可执行文件(实际上是图像,因为它是ARM嵌入的)超过限制时,因此它发生的特定函数与问题无关,只是距离他们访问的地址太远了…@MSalters:我遇到了这个错误,它是这个错误的重复。但是我没有找到任何解决办法。@MSalters:因为上面的代码在aix5.3上的gcc4.0.2上运行良好。在aix6.1上使用5.3汇编程序构建gcc4.6.1,然后尝试编译代码。aix6.1中当前版本的汇编程序是6.1,AIX5.3中的汇编程序是as5.3。这个解决方案的可行性如何?哇,一条错误消息,豪华。上次我看到这样的错误不是在gcc中,而是另一个工具链,结果是它实际上屏蔽了底部16位,并将其用作置换。调试花了一段时间,特别是因为这是我第一份工作的第二周。耶,我能理解。当您的函数超过32K时,原始的K&R编译器(at&T)也有类似的静默问题。当然,您不能将这些bug简化为一个小的测试示例;)超过32k的功能在当时可能不是一个高风险。我的错误发生在整个可执行文件(实际上是图像,因为它是ARM嵌入的)超过限制时,因此它发生的特定函数与问题无关,只是距离他们访问的地址太远了…@MSalters:我遇到了这个错误,它是这个错误的重复。但是我没有找到任何解决办法。@MSalters:因为上面的代码在aix5.3上的gcc4.0.2上运行良好。在aix6.1上使用5.3汇编程序构建gcc4.6.1,然后尝试编译代码。aix6.1中当前版本的汇编程序是6.1,AIX5.3中的汇编程序是as5.3。这个解决方案的可行性如何?这些选项只适用于链接器,不是吗?在这种情况下,它们不会帮助处理汇编程序错误消息。这些选项仅适用于链接器,不是吗?在这种情况下,它们不会帮助处理汇编程序错误消息。