|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
[c++] Compilazione sorgenti
Buongiorno ragazzi, volevo chiedervi se potreste indicarmi come fare per:
ho scaricato una libreria in c++ che permette di leggere la porta seriale, il link è questo: http://sourceforge.net/projects/libserial/ ora, ho scompattato il tar, fatto la triade ./configure, make e make install senza errori. Ora, quest'operazione mi crea anche una dir con degli esempi, uno dei quali ho dovuto modificarlo perchè la seriale aperta nel sorgente non corrisponde con la seriale che ho io da aprire sul mio pc. Bene, vado a salvare il sorgente e a compilarlo con g++, ma mi da errori in merito alla libreria che sto usando, quindi credo che debba passarla come opzione al compilatore g++. Ed è questo il mio problema, non so come fare dato che nel README del tar, non c'è nessun riferimento. Mi aiutate? Thx. RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Per linkare una libreria, devi passare il parametro -l<nome libreria>. Ad esempio:
g++ [...] -lciao per linkare la libreria libciao.so (nota che lib e .so sono omessi).
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
Provo subito!
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
allora, ecco quello che non va:
se cerco di includere la libreria così: Codice:
g++ read_port.cpp -o readport -llibserial ecco l'output: /usr/bin/ld: cannot find -llibserial collect2: ld returned 1 exit status
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
nota che sono un pirla e non so leggere
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
allora, c'è qualche problema:
Codice:
#include <SerialStream.h>
#include <ios>
#include <iostream>
int main( int argc, char** argv )
{
//
// Open the serial port.
//
using namespace LibSerial ;
SerialStream serial_port ;
serial_port.Open( "/dev/ttyS0" ) ;
if ( ! serial_port.good() ) {
std::cerr << "Error: Could not open serial port." << std::endl ;
exit(1) ;
}
//
// Set the baud rate of the serial port.
//
serial_port.SetBaudRate( SerialStreamBuf::BAUD_19200 ) ;
if ( ! serial_port.good() ) {
std::cerr << "Error: Could not set the baud rate." << std::endl ;
exit(1) ;
}
//
// Set the number of data bits.
//
serial_port.SetCharSize( SerialStreamBuf::CHAR_SIZE_8 ) ;
if ( ! serial_port.good() ) {
std::cerr << "Error: Could not set the character size." << std::endl ;
exit(1) ;
}
//
// Disable parity.
//
serial_port.SetParity( SerialStreamBuf::PARITY_NONE ) ;
if ( ! serial_port.good() ) {
std::cerr << "Error: Could not disable the parity." << std::endl ;
exit(1) ;
}
//
// Set the number of stop bits.
//
serial_port.SetNumOfStopBits( 1 ) ;
if ( ! serial_port.good() ) {
std::cerr << "Error: Could not set the number of stop bits."
<< std::endl ;
exit(1) ;
}
// Turn on hardware flow control
serial_port.SetFlowControl( SerialStreamBuf::FLOW_CONTROL_NONE ) ;
if ( ! serial_port.good() ) {
std::cerr << "Error: Could not use hardware flow control."
<< std::endl ;
exit(1) ;
}
//
// Do not skip whitespace characters while reading from the
// serial port.
//
serial_port.unsetf( std::ios_base::skipws ) ;
//
// Keep reading data from serial port and print it to the screen.
//
char ch ;
while( serial_port.get(ch) ) {
std::cerr.put(ch) ;
}
return EXIT_SUCCESS ;
}
allora, compilato con: g++ read_port.cpp -o readport -lserial compila senza errori, quando vado ad eseguirlo mi da: ./readport ./readport: error while loading shared libraries: libserial.so.0: cannot open shared object file: No such file or directory ma non ho capito quale file non trova, cioè, se non trovasse libserial non dovrebbe nemmeno compilarmi, sbaglio?
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Immagino che la libreria è stata installata dentro /usr/local/lib. Aggiungi quel path al file /etc/ld.so.conf, ed esegui "ldconfig".
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
Ancora grazie
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:14.



















