Code block guasto

di il
3 risposte

Code block guasto

Ciao a tutti ho un problema con code block installato su linux .

Il problema cosiste che il compilatore non riconosce le funzioni della libreria  <math.h>, chi può dirmi cosa fare .

Grazie

3 Risposte

  • Re: Code block guasto

    Ti rispondo io, anche se la mia esperienza è limitata…

    mi sembra di aver capito che sotto Linux la libreria math.h non è linkata di default (io non uso windows, ma mi sembra di aver capito che nelle finestre invece lo è)

    quindi devi dire al linker di “prenderla in considerazione”

    io uso geany (e pure poco e male) ma ho risolto aggiungendo l'opzione  “-lm” alla fine del comando di  “build” di geany

    come fare in Code::Block ?  non saprei proprio

    la ragione invece per la quale “sembra” andare se i numeri li scrivi “hard-coded” (nella prima schermata) è che gcc ottimizza i calcoli con costanti a Compile-time, e quindi registra direttamente il risultato nell'eseguibile

    almeno così mi sembra di aver capito…

  • Re: Code block guasto

    Il tuo Code::Blocks non sembra guasto. Probabilmente qualcosa non è settato correttamente nel tuo sistema. Ho fatto un piccolo esperimento: nel mio Code::Blocks funzionano tutte e due le versioni del programma. Ho provato compilare a mano (da un terminale) con il comando

    gcc main.c -o bin/Debug/prova

    e solo la versione con i numeri hard-coded viene compilata, mentre se uso

    gcc -Wall -g -c main.c -o obj/Debug/main.o
    g++ -o bin/Debug/prova obj/Debug/main.o

    (come fa Code::Blocks) mi compila entrambe le versioni; quindi significa che g++ ci mette del suo a linkare correttamente. Il che mi porta a supporre che tu non abbia correttamente installato le librerie di sviluppo (quelle che finiscono con ‘-dev’), tipo libc6-dev.

  • Re: Code block guasto

    Se il problema è il flag -lm come dice @StandardOil, per aggiungerlo di default vai in Settings > Compiler > Other compiler options e aggiungilo nella casella d testo.

    Se invece vuoi aggiungerlo solo per specifici progetti, click destro sul nome del progetto > Build options fai la stessa cosa.

Devi accedere o registrarti per scrivere nel forum
3 risposte