更新:找到了一种编译方法,见下文。
您好,我在 cygwin 下编译 boost 程序时遇到问题。我已经从 cygwin 项目的 setup.exe 安装了默认的 boost 和 g++ 包。
在我的 Linux 系统上,我可以使用以下代码编译程序 reg.cpp:
g++ -I/usr/include/boost -lboost_regex -o reg reg.cpp
在 cygwin 上,我必须稍微编辑一下:
g++ -I/usr/include/boost-1_33_1 -lboost_regex-gcc-mt -o reg reg.cpp
问题是 cygwin 版本导致链接器提取一百万个未定义的引用错误。尝试使用 boost 测试框架库时也会发生同样的事情。
链接器正在查找 boost_regex-gcc-mt,但它似乎与包含文件不匹配。这是第一个链接器错误:
undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)'
如何编译
我在这里找到了解决方案要编译,我执行了以下操作:
g++ -I/usr/include/boost-1_33_1 reg.cpp -o reg -lboost_regex-gcc-mt
根据帖子,它与链接器顺序有关。有人知道为什么这在 cygwin 而不是现代 Linux 中很重要吗?