3

我正在尝试将文件写入磁盘,然后自动重新编译。不幸的是,某事似乎不起作用,我收到一条我还不明白的错误消息(我是 C 初学者:-)。如果我手动编译生成的 hello.c,一切正常?!

#include <stdio.h>
#include <string.h>

    int main()
    {
        FILE *myFile;
        myFile = fopen("hello.c", "w");
        char * text = 
        "#include <stdio.h>\n"
        "int main()\n{\n"
        "printf(\"Hello World!\\n\");\n"
        "return 0;\n}";
        system("cc hello.c -o hello");
        fwrite(text, 1, strlen(text), myFile);  
        fclose(myFile);
        return 0;
    }

这是我得到的错误:

/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crt1.o:在函数_start': (.text+0x20): undefined reference tomain'collect2:ld返回1退出状态

4

3 回答 3

6

这是因为您在将程序源代码写入文件之前system调用编译文件。并且因为此时您是一个空文件,所以链接器正在抱怨它不包含函数,这是正确的。hello.cmain

尝试改变:

system("cc hello.c -o hello");
fwrite(text, 1, strlen(text), myFile);  
fclose(myFile);

到:

fwrite(text, 1, strlen(text), myFile);  
fclose(myFile);
system("cc hello.c -o hello");
于 2011-04-16T13:33:05.673 回答
0

您是在编写文件之前尝试编译文件吗?

于 2011-04-16T13:33:23.363 回答
0

在调用系统编译文件之前,您不应该先编写文件并关闭文件吗?我相信这是你的问题。

于 2011-04-16T13:34:39.620 回答