Mac / Eclipse CDT:如何安装boost

时间:2016-03-07 09:16:58

标签: c++ eclipse macos boost

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)

知道我的升压安装有什么问题吗?

1 个答案:

答案 0 :(得分:0)

现在它有效。刚刚将选项-lboost_locale添加到Properties / C ++ Build / MacOs X C ++ Linker中的命令行模式:

.closest("selector")