libserial 未定义的符号引用
libserial undefined reference to symbol
我在 Ubuntu 16.04 中从源代码编译了 libserial-0.6.0rc2,现在正在尝试编译一个简单的测试程序:
#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 的必需依赖项。我可以使用提供的 makefile 构建示例,但无法使用已安装的库构建我自己的示例。有人有什么想法吗?
您正在尝试使用 C 编译器驱动程序编译 link C++ 程序
gcc
。 C和C++是不同的语言。 gcc
默认情况下不 link 标准 C++ 库,libstdc++
,
所以你对符号 _ZNSaIcED1Ev
有一个未定义的引用错误(demangled
= std::allocator<char>::~allocator()
) 在该库中定义。
要编译和 link C++ 程序使用 C++ 编译器驱动程序,g++
。
我在 Ubuntu 16.04 中从源代码编译了 libserial-0.6.0rc2,现在正在尝试编译一个简单的测试程序:
#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 的必需依赖项。我可以使用提供的 makefile 构建示例,但无法使用已安装的库构建我自己的示例。有人有什么想法吗?
您正在尝试使用 C 编译器驱动程序编译 link C++ 程序
gcc
。 C和C++是不同的语言。 gcc
默认情况下不 link 标准 C++ 库,libstdc++
,
所以你对符号 _ZNSaIcED1Ev
有一个未定义的引用错误(demangled
= std::allocator<char>::~allocator()
) 在该库中定义。
要编译和 link C++ 程序使用 C++ 编译器驱动程序,g++
。