История изменений
Исправление Toxo2, (текущая версия) :
Не? Не оно?
Не. Не оно. Есть:
$ cat ./some.c
#!/usr/bin/tcc -run -xc -w
main() {printf("Hello\n");}
$ strace -e execve ./some.c
execve("./some.c", ["./some.c"], 0x7fffd9554490 /* 49 vars */) = 0
Hello
$ strace -e execve tcc -run -xc -w ./some.c
execve("/usr/bin/tcc", ["tcc", "-run", "-xc", "-w", "./some.c"], 0x7fff15f52320 /* 49 vars */) = 0
Hello
$ sed 's+/bin+/local/bin+g' ./some.c
$ strace -e execve ./some.c
execve("./some.c", ["./some.c"], 0x7fff11aac8f0 /* 49 vars */) = 0
0: </usr/local/bin/tcc>
1: <-run -xc -w>
2: <./some.c>
TCC_OPTION_x is set on c
TCC_OPTION_w is set
Hello
Где-то в Гугле человек говорил
The interpreter specified in the shebang line is executed by the kernel itself inside the execve call.
-----------
Кстати - тоже слегка удивительно мне: тот tcc, который сейчас утягивается из Git авторов очень сильно отличается от release с тем же номером. В том числе - они ещё и файлы *.h теперь добавили в C_TYPE. А сравнить libtcc.c из гита и из релиза по строкам просто нереально - они совсем разные. Формально версии 0.9.27 и там, и там.
Исправление Toxo2, :
Не? Не оно?
Не. Не оно. Есть:
$ cat ./some.c
#!/usr/bin/tcc -run -xc -w
main() {printf("Hello\n");}
$ strace -e execve ./some.c
execve("./some.c", ["./some.c"], 0x7fffd9554490 /* 49 vars */) = 0
Hello
$ strace -e execve tcc -run -xc -w ./some.c
execve("/usr/bin/tcc", ["tcc", "-run", "-xc", "-w", "./some.c"], 0x7fff15f52320 /* 49 vars */) = 0
Hello
$ sed 's+/bin+/local/bin+g' ./some.c
$ strace -e execve ./some.c
execve("./some.c", ["./some.c"], 0x7fff11aac8f0 /* 49 vars */) = 0
0: </usr/local/bin/tcc>
1: <-run -xc -w>
2: <./some.c>
TCC_OPTION_x is set on c
TCC_OPTION_w is set
Hello
Где-то в Гугле человек говорил
The interpreter specified in the shebang line is executed by the kernel itself inside the execve call.
----------- Кстати - тоже слегка удивительно мне: тот tcc, который сейчас утягивается из Git авторов очень сильно отличается от release с тем же номером. В том числе - они ещё и файлы *.h теперь добавили в C_TYPE. А сравнить libtcc.c из гита и из релиза по строкам просто нереально - они совсем разные. Формально версии 0.9.27 и там, и там.
Исходная версия Toxo2, :
Не? Не оно?
Не. Не оно. Есть:
$ cat ./some.c
#!/usr/bin/tcc -run -xc -w
main() {printf("Hello\n");}
$ strace -e execve ./some.c
execve("./some.c", ["./some.c"], 0x7fffd9554490 /* 49 vars */) = 0
Hello
$ strace -e execve tcc -run -xc -w ./some.c
execve("/usr/bin/tcc", ["tcc", "-run", "-xc", "-w", "./some.c"], 0x7fff15f52320 /* 49 vars */) = 0
Hello
$ sed 's+/bin+/local/bin+g' ./some.c
$ strace -e execve ./some.c
execve("./some.c", ["./some.c"], 0x7fff11aac8f0 /* 49 vars */) = 0
0: </usr/local/bin/tcc>
1: <-run -xc -w>
2: <./some.c>
TCC_OPTION_x is set on c
TCC_OPTION_w is set
Hello
Где-то в Гугле человек говорил
The interpreter specified in the shebang line is executed by the kernel itself inside the execve call.