View Full Version : KDevelop e ncurses
SilverXXX
24-11-2004, 14:39
Premetto che so MOLTO poco di programmazione in linux, ma avevo bisogno di fare un programma partendo da uno per terminale win, e mi servivano delle funzione che sostituiserro quelle di conio.h, cioè le ncurses.
Il problema viene se compilo il programma fatto con kdevelop, mi dà questo errore:
/home/silver/Documents/ndama/src/ndama.c:32: undefined reference to `initscr'
ndama.o(.text+0x1d):/home/silver/Documents/ndama/src/ndama.c:34: undefined reference to `printw'
Ho aggiunto l'opzione -lncurses al compilatore, quindi me lo dovrebbe compilare (ovviamente ho aggiunto anche il .h); infatti se lo compilo con gcc ndama.c -o ndama -lncurses me lo compila e va bene!!! Come posso risovere :cry: ? Non so dove sbattere la testa :muro: !
ilsensine
24-11-2004, 14:42
Se hai già trovato la soluzione, quale è il problema? :D
Sposto in programmazione
SilverXXX
24-11-2004, 14:56
@ ilsensine: ti chiedo scusa se ho postato nella sezione sbagliata, me non ero sicuro dove andava
Il problema è che il programma richiede diversi file e non ho la minima idea su come si usino configure e make da linea di comando, per quello usavo kdevelop
ilsensine
24-11-2004, 15:01
Cioè: tu vuoi che il pacchetto generato da kdevelop ti inserisca automaticamente "-lncurses"?
SilverXXX
24-11-2004, 15:05
Purtroppo non riesco neanche a compilarlo, nonostane abbia messo l'opzione -lncurses nel progetto in kdevelop
ilsensine
24-11-2004, 15:09
Fai un passo indietro e rispiegami il problema, che mi sono confuso...
Devi convertire un programma che usava la conio, e pensavi di usare le ncurses...ok?
Ok. Le ncurses sono molto diverse (e più complesse/complete) delle conio; hai riscritto le parti interessate o ti sei limitato a sotituire <conio.h> con <ncurses.h>?
SilverXXX
24-11-2004, 17:10
So che le ncurses sono più complesse e complete ( e infatti prima mi sono un pò documentato ;) ), e ho, oltre ad aver cambiato la libreria, aggiunto la initscr iniziale e la endwin finale, che per il momento sono più che sufficenti per wuel che devo fare. Ovviamente ho cambiato le printf con printw, aggiunto refresh dove serviva e lasciato stare le getch(). Solo che compilando da kdevelop non andava, e mi dava l'errore del primo post. Allora ho provato a fare un file .c di prova con initscr, printw, refresh e endwin e andava, compilando con -lncurses.
Purtroppo non so dove mettere le mani in kdevelop, per questo ho postato.
edit: dove posso trovare un elenco chiaro e leggibile di tutte le funzioni presenti nelle ncurses?
ilsensine
24-11-2004, 18:48
kdevelop usa gli script di autoconfigurazione, che è abbastanza un panico modificare manualmente. Se configuri esternamente a kdevelop, esegui configure con questa sintassi:
LDFLAGS=-lncurses ./configure <opzioni>
Dentro kdevelop, puoi impostare LDFLAGS tra le impostazioni del progetto.
Nei kdevelop più vecchi, era un pò più semplice.
SilverXXX
24-11-2004, 21:07
Ho aggiunto -lncurses alle LDFLAGS del progetto, ma non è servito a niente, purtroppo; comunque, tanto per non fare un thread lunghissimo (e risolvere più in fretta) ti ho aggiunto ai miei contatti icq, così parliamo più liberamente, poi posto la soluzione appena la troviamo. Ok ?
ps. sarebbe bello fare una mini-sezione dentro a programmazione per la programmazione in linux, non trovi?
ilsensine
25-11-2004, 07:38
Allega una bozza del progetto così posso vedere cosa c'è di sbagliato. Che versione di kdevelop hai?
SilverXXX
25-11-2004, 12:46
Eccoli, adesso sono quasi vuoti perchè non ho messo ancora i sorgenti del programma console che devo convertire, ma l'errore lo da comunque.
ps. il file non ci sta, posso inviartelo per email?
ilsensine
25-11-2004, 13:35
ilsensine <at> hwupgrade <dot> it
SilverXXX
25-11-2004, 14:01
Inviato
ps. @hwupgrade.it fa molto figo :cool: , imaagino faccia parte dei privilegi dei moderatori :D
ilsensine
25-11-2004, 14:34
Ok ho replicato il problema (certo kdevelop 3 fa veramente pena); l'ho aggirato così:
Apri la finestra "opzioni progetto"; vai in "opzioni di make" e aggiungi una variabile d'ambiente; chiamala - indovina un pò - LDFLAGS e assegnagli 'sto benedetto -lncurses come valore.
Poi mi chiedono perché preferisco farmi i Makefile a manina ;)
ilsensine
25-11-2004, 14:53
Mi ero scordato: non mi sembra che la funzione initsrc faccia parte delle ncurses; esiste la initscr, non so se è quella che avevi intenzione di usare.
SilverXXX
25-11-2004, 15:40
Ho aggiunto la variabile d'ambiente che mi hai detto, ma non va lo stesso.
Ti ho spedito il file del nuovo progetto, se hai voglia di dargli un'occhiata.
ps. ho la tremenda sensazione che dovrò imparare a fare i makefile
ilsensine
25-11-2004, 15:50
Originariamente inviato da ilsensine
Mi ero scordato: non mi sembra che la funzione initsrc faccia parte delle ncurses; esiste la initscr, non so se è quella che avevi intenzione di usare.
SilverXXX
25-11-2004, 16:16
Premetto che ho solo letto dei tutorial semplici (niente roba avanzata, ancora), ma dicono di usare initsrc per inizializzare la finestra di lavoro
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.