libserial неопределенная ссылка на символ

Я скомпилировал libserial-0.6.0rc2 из исходного кода в Ubuntu 16.04 и сейчас пытаюсь скомпилировать простую тестовую программу:

#include <SerialStream.h>
#include <iostream>
using namespace LibSerial;
int main(int argc, char** argv)
{
SerialStream serial_port;
serial_port.Open("/dev/ttyS0");
serial_port.SetBaudRate( SerialStreamBuf::BAUD_9600 );
serial_port.SetCharSize( SerialStreamBuf::CHAR_SIZE_8 );
serial_port.SetParity( SerialStreamBuf::PARITY_EVEN );
serial_port.SetNumOfStopBits(1);

serial_port.write( "s", 1 ) ;
}

Я получаю следующую ошибку:

karl@karl-T430u:~/scan/arduino$ gcc *.cpp -Wl,-
rpath -Wl,/usr/local/lib -L/usr/local/lib -lserial
/usr/bin/ld: /tmp/ccT3ucCm.o: undefined reference to symbol
'_ZNSaIcED1Ev@@GLIBCXX_3.4'
//usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO
missing from command line
collect2: error: ld returned 1 exit status

Мне потребовалось некоторое время, чтобы скомпилировать libserial, поскольку, очевидно, существовала необходимая зависимость от SIP, о которой я не знал. Я могу собрать примеры, используя предоставленный make-файл, но я не могу собрать свои собственные примеры с установленными библиотеками. У кого-нибудь есть какие-либо идеи?

0

Решение

Вы пытаетесь скомпилировать и связать программу C ++ с драйвером компилятора C
gcc, C и C ++ — это разные языки. gcc по умолчанию не ссылается на стандартную библиотеку C ++, libstdc++,
поэтому у вас есть неопределенная ошибка ссылки на символ _ZNSaIcED1Ev (декодированный
знак равно std::allocator<char>::~allocator()), который определен в этой библиотеке.

Для компиляции и компоновки программ на C ++ используйте драйвер компилятора C ++, g++,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]