vendicatorex
24-07-2010, 12:00
Salve:) ho un codice scritto in c++ che non riesco a compilare con eclipse. Il codice non ha problemi in quanto riesco a compilarlo a riga di comando con ubuntu. Il problema è che il codice fa uso di una libreria esterna di nome JTC. Quando tento di compilare con Eclipse mi si presentano i seguenti errori
**** Build of configuration Debug for project Barriera ****
make all
Building target: Barriera
Invoking: GCC C++ Linker
g++ -Lpthread -o"Barriera" ./barrieramia.o -lJTC
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libJTC.a(Thread.o): In function `JTCThread::start()':
Thread.cpp:(.text+0x1b94): undefined reference to `pthread_attr_setstacksize'
Thread.cpp:(.text+0x1bc3): undefined reference to `pthread_create'
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libJTC.a(Thread.o): In function `JTCThread::exit_hook()':
Thread.cpp:(.text+0x2f2f): undefined reference to `pthread_detach'
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libJTC.a(TSS.o): In function `JTCTSS::get(unsigned int)':
TSS.cpp:(.text+0x3d): undefined reference to `pthread_getspecific'
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libJTC.a(TSS.o): In function `JTCTSS::allocate(void (*)(void*))':
TSS.cpp:(.text+0x5f): undefined reference to `pthread_key_create'
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libJTC.a(TSS.o): In function `JTCTSS::allocate()':
TSS.cpp:(.text+0x639): undefined reference to `pthread_key_create'
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libJTC.a(TSS.o): In function `JTCTSS::set(unsigned int, void*)':
TSS.cpp:(.text+0xc0e): undefined reference to `pthread_setspecific'
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libJTC.a(TSS.o): In function `JTCTSS::release(unsigned int)':
TSS.cpp:(.text+0x12b2): undefined reference to `pthread_key_delete'
collect2: ld returned 1 exit status
make: *** [Barriera] Errore 1
aggiungo che ho già provveduto ad entrare nelle proprietà del progetto e seguendo il percorso C/C++ Build->Settings poi GCC C++ Linker dentro "Libraries(-l)" ho inserito "JTC" mentre dentro "Library search path(-L)" ho inserito "pthread"
Non capisco esattamente quale sia il problema però ho osservato che il comando invocato da eclipse è
g++ -Lpthread -o"Barriera" ./barrieramia.o -lJTC
mentre quello funzionante che invoco manualmente da console di ubuntu è
g++ -o maxbarrieramia maxbarrieramia.cpp -lJTC -lpthread
spero che qualcuno che conosce questa libreria ed eclipse possa aiutarmi:help:
**** Build of configuration Debug for project Barriera ****
make all
Building target: Barriera
Invoking: GCC C++ Linker
g++ -Lpthread -o"Barriera" ./barrieramia.o -lJTC
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libJTC.a(Thread.o): In function `JTCThread::start()':
Thread.cpp:(.text+0x1b94): undefined reference to `pthread_attr_setstacksize'
Thread.cpp:(.text+0x1bc3): undefined reference to `pthread_create'
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libJTC.a(Thread.o): In function `JTCThread::exit_hook()':
Thread.cpp:(.text+0x2f2f): undefined reference to `pthread_detach'
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libJTC.a(TSS.o): In function `JTCTSS::get(unsigned int)':
TSS.cpp:(.text+0x3d): undefined reference to `pthread_getspecific'
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libJTC.a(TSS.o): In function `JTCTSS::allocate(void (*)(void*))':
TSS.cpp:(.text+0x5f): undefined reference to `pthread_key_create'
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libJTC.a(TSS.o): In function `JTCTSS::allocate()':
TSS.cpp:(.text+0x639): undefined reference to `pthread_key_create'
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libJTC.a(TSS.o): In function `JTCTSS::set(unsigned int, void*)':
TSS.cpp:(.text+0xc0e): undefined reference to `pthread_setspecific'
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/libJTC.a(TSS.o): In function `JTCTSS::release(unsigned int)':
TSS.cpp:(.text+0x12b2): undefined reference to `pthread_key_delete'
collect2: ld returned 1 exit status
make: *** [Barriera] Errore 1
aggiungo che ho già provveduto ad entrare nelle proprietà del progetto e seguendo il percorso C/C++ Build->Settings poi GCC C++ Linker dentro "Libraries(-l)" ho inserito "JTC" mentre dentro "Library search path(-L)" ho inserito "pthread"
Non capisco esattamente quale sia il problema però ho osservato che il comando invocato da eclipse è
g++ -Lpthread -o"Barriera" ./barrieramia.o -lJTC
mentre quello funzionante che invoco manualmente da console di ubuntu è
g++ -o maxbarrieramia maxbarrieramia.cpp -lJTC -lpthread
spero che qualcuno che conosce questa libreria ed eclipse possa aiutarmi:help: