C编程 - 编写自己编译的文本文件

时间:2011-04-16 13:31:35

标签: c file compiler-construction writing cc

我正在尝试将文件写入磁盘,然后自动重新编译。不幸的是,似乎没有用,我收到的错误信息我还不明白(我是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 to main'中 collect2:ld返回1退出状态

3 个答案:

答案 0 :(得分:5)

这是因为你在编写文件之前调用system来编写程序源代码。因为,在那时,你的hello.c是一个空文件,链接器正在抱怨它正确,它不包含main函数。

尝试更改:

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");

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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