Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
在gcc中初始化数组,未定义对'memcpy';_C_Arrays_Linux_Gcc_Nachos - Fatal编程技术网

在gcc中初始化数组,未定义对'memcpy';

在gcc中初始化数组,未定义对'memcpy';,c,arrays,linux,gcc,nachos,C,Arrays,Linux,Gcc,Nachos,我正在用Nachos3.4,Centos 6.0编写C代码,由gcc 2.95.3编译 我使用的命令行是gmakeall 当我编译这个时,一切都很好 int main() { char* fname[] = {"c(0)", "c(1)", "c(2)", "c(3)", "c(4)", "c(5)", "c(6)", "c(7)"}; return 0; } 但当我这样做时,它说未定义对'memcpy'的引用 int main() { char* fname[] =

我正在用Nachos3.4,Centos 6.0编写C代码,由gcc 2.95.3编译

我使用的命令行是
gmakeall

当我编译这个时,一切都很好

int main()
{
    char* fname[] = {"c(0)", "c(1)", "c(2)", "c(3)", "c(4)", "c(5)", "c(6)", "c(7)"};
    return 0;
}

但当我这样做时,它说
未定义对'memcpy'的引用

int main()
{
    char* fname[] = {"c(0)", "c(1)", "c(2)", "c(3)", "c(4)", "c(5)", "c(6)", "c(7)", "c(8)"};
    return 0;
}

问题出在哪里?我如何解决这个问题?

自动
fname
数组的初始化涉及编译器将大量数据从隐藏的
静态
数组复制到堆栈上的数组。GCC有几种技术可以用于此,它最喜欢的技术之一是调用C库
memcpy
例程,因为无论发生什么情况,这都应该很好而且很快

在您的情况下,您似乎没有一个C库,所以这是一个问题

您可以告诉GCC始终使用x86指令,而不是像这样调用库:

gcc -mstringop-strategy=rep_byte -c -O file.c

然而,我的印象是GCC直到3.x版中期才开始这么做


可能您使用的是“MIPS”处理器,教师喜欢该处理器,其中所需的选项是
-mno memcpy

请显示(最小)完整的代码以复制此文件,包括您用来编译此文件的命令行。编辑后,再次检查CC 2.95.3是非常过时的编译器,可能是由于ABi不兼容(GCC 2.95),它与CentOS 6.0中提供的libc的链接存在问题?哇!你为什么不进入21世纪?我确实尝试了最新的gcc,但它与nachos3.4不兼容。
gcc -mstringop-strategy=loop -c -O file.c