web-dev-qa-db-fra.com

ubuntu, erreur de syntaxe proche d'un jeton inattendu `('

Je veux exécuter un programme c sur Ubuntu 18.04, sur une machine virtuelle, et j'obtiens cette erreur:

./test.c: line 3: syntax error near unexpected token `('
./test.c: line 3: `void main(int argc, char** argv)'

J'ai compilé et couru le fichier comme ceci:

gcc -o test test.c
./test.c

J'ai donné la permission au dossier en utilisant:

Sudo chmod a+rwx

J'ai cherché en ligne, et ce que je sais, c'est que (c'est un caractère spécial dans le shell/terminal mais je ne pouvais pas comprendre/trouver un moyen de l'utiliser quand j'écris du code sans erreur.

Quelqu'un peut-il m'aider s'il vous plaît à résoudre ce problème?

1
Alex C

Dans gcc -o test test.c, la variable test après -o est le nom du fichier exécutable réel. Vous devez donc exécuter ./test. Lorsque vous exécutez ./test.c, le shell tente de lire votre code source C (qui n’est qu’un fichier texte) en tant que script shell et l’exécute conformément à la syntaxe actuelle du shell (le shell essaie de le lire, pas comme code C compilé).

Par ailleurs, n'utilisez pas test comme nom de fichier exécutable. Il y a déjà /usr/bin/test et cela peut semer la confusion plus tard. Et dans l’ensemble, utiliser des noms d’exécutables système pour des programmes personnels n’est qu’une mauvaise pratique.

2