Mac(El Capitan)/ Eclipse CDT / boost:架构的未定义符号x86_64
初学者问题:
#include <iostream>
#include <boost/locale.hpp>
int main(void) {
boost::locale::generator gen;
std::locale loc=gen("");
std::locale::global(loc);
std::cout.imbue(loc);
std::cout <<boost::locale::format("Today {1,date} at {1,time} we had run our first localization example") % time(0)
<<std::endl;
}
在Eclipse中构建此代码时,我得到:
Invoking: MacOS X C++ Linker
/usr/local/bin/g++-5 -L/Users/sam/boost_1_60_0/stage/lib -o "cpp-test-1" ./calc-1.o ./test-1.o
Undefined symbols for architecture x86_64:
"boost::locale::base_message_format<char>::id", referenced from: ...
关于此错误,还有其他一些问题。据我所知,问题是由编译器和boost库使用的不同stdlibs(libc ++和libstdc ++)引起的。 首先我从macports安装了boost,然后用自制软件安装了这个教程(并使用./b2和g ++ - 5编译了boost):
http://qiita.com/misho/items/0c0b3ca25bb8f62aa681#install-boost-for-gnu-compilers
它不起作用。
我在Properties / C / C ++ Build中的设置:
Linker
Command: /usr/local/bin/g++-5
All Options: -L/Users/sam/boost_1_60_0/stage/lib -std=c++0x -I -O0 -g3 -Wall -c -fmessage-length=0
Libs: /Users/sam/boost_1_60_0/stage/lib
Compiler
Command: /usr/local/bin/g++-5
All Options: -std=c++0x -I/Users/sam/boost_1_60_0 -O0 -g3 -Wall -c -fmessage-length=0
Includes: /Users/sam/boost_1_60_0
lib$ otool -L libboost_locale.dylib
libboost_locale.dylib:
libboost_locale.dylib (compatibility version 0.0.0, current version 0.0.0)
libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/local/opt/gcc/lib/gcc/5/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.21.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.1.1)
/usr/local/lib/gcc/5/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
知道我的升压安装有什么问题吗?
答案 0 :(得分:0)
现在它有效。刚刚将选项-lboost_locale添加到Properties / C ++ Build / MacOs X C ++ Linker中的命令行模式:
.closest("selector")