Я пытаюсь написать скрипт генератора кода на Python, который генерирует исходный файл на C, компилирует и запускает его.Однако у меня возникают проблемы с вызовом gcc из моего скрипта.
Простой пример Hello World:
import subprocess
basename = "CodeGenTest";
execname = basename;
srcname = basename + ".c";
codeList = [];
codeList.append("#include <stdio.h>");
codeList.append("int main(int argc, char *argv[])\n{");
codeList.append("printf(\"Hello world.\\n\");");
codeList.append("}");
# Convert codelist to string.
codeList.append("");
codeString = "\n".join(codeList);
# Print code to output source file
outfile=open(srcname,'w');
outfile.write(codeString);
outfile.close;
print "Compile.";
cmd = ["gcc", "-O2", srcname, "-o", execname];
p = subprocess.Popen(cmd);
p.wait();
subprocess.call(["./"+execname]);
Если я запускаю этот скрипт, я получаю следующее сообщение об ошибке
Compile.
Undefined symbols:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Если я делаю то же самое в оболочке интерпретатора Python, она работает нормально.Я также могу без проблем скомпилировать код непосредственно в оболочке.
Я пробовал разные варианты, используя subprocess.Popen (), subprocess.call (), с и без всевозможных комбинаций аргументов, которые я могу себе представитьиз, все та же проблема.
Кто-нибудь есть какие-либо идеи, в чем может быть моя проблема здесь?