GOOGLE ADS

dimanche 24 avril 2022

Compiler le fichier .c contenant un mot spécifique dans le script bash

Comment pouvons-nous compiler des fichiers ".c" dans un dossier d'entrée contenant un mot spécifique dans bash ? (Peu importe si une partie du mot est en majuscule ou en minuscule)
J'essaie ceci:

find $foldername -type f -name "*.c" | while read filename; do
# gcc filename | grep "word"
done

Mais je ne sais pas quoi écrire dans la dernière ligne pour le compiler.


Solution du problème

Je pense que tu pourrais faire quelque chose comme ça:

for FILE in $(find $foldername -type f -name "*.c"); do
if grep -q "text here" $FILE; then
#Compile the file with GCC
fi
done

Je ne l'ai pas testé car je ne suis pas sur une machine Linux en ce moment, et j'ai peut-être fait une faute de frappe, mais au moins la logique semble OK.

Pour compiler C, il y a deux cas:



  • Vous le compilez "en une seule fois". Pour cela, il vous suffit d'utiliser



gcc -o output_file_name file1.c

Le problème avec cette technique est que vous devez mettre tous les fichiers requis dans la compilation en une seule fois. Par exemple, si fichier1.c inclut fichier2.c, vous devez faire gcc -o output_file_name file1.c file2.c. Dans votre cas, je suppose que vos fichiers ne sont pas autonomes, donc cela ne fonctionnera pas.



  • Vous pouvez créer des fichiers objets ( .o), puis les lier ultérieurement. Pour cela, utilisez le -cdrapeau lors de la compilation: gcc -c file1.c. Cela créera un file1.ofichier. Plus tard, lorsque vous aurez créé tous les fichiers objets requis, vous pourrez à nouveau les lier dans un seul exécutable avec GCC



gcc -o output_file_name file1.o file2.o

Je dois admettre que je n'ai pas compilé C "à la main" depuis très longtemps. J'ai utilisé ceci pour me rappeler comment c'est fait https://www.cs.utah.edu/~zachary/isp/tutorials/separate/separate.html. Je suis sûr qu'il existe de meilleurs tutoriels ailleurs, mais j'avais simplement besoin d'un rappel.

Si vous le pouvez, utilisez des outils de construction automatisés comme make ou cmake, même si dans votre cas, parce que vous ne voulez compiler que des fichiers contenant une certaine chaîne, cela peut être compliqué.

Aucun commentaire:

Enregistrer un commentaire

Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique ?

Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...