2012-07-27 4 views
3

J'essaie de lier à boost 1.50 sur Mountain Lion avec Xcode V 4.4 J'utilise gcc 4.7, donc aucun truc Xcode ne devrait être impliqué. Chaque fois que je suis triing de lier cela me donne ceci:Boost Mountain Lion reliant

/usr/local/bin/g++ -o bin/parse -Lbin `root-config --ldflags` build/Bcf.o build/Bmf.o build/Boc.o build/EasyBMP.o build/Fei4.o build/Options.o build/RxChannel.o build/TxChannel.o -lboost_program_options -lboost_system -lboost_filesystem -lboc `root-config --libs` build/parse.o 
Undefined symbols for architecture x86_64: 
    "start", referenced from: 
    -u command line option 
    (maybe you meant: boost::property_tree::string_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::property_tree::id_translator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::cstart() const, boost::progress_display::restart(unsigned long) , boost::property_tree::json_parser::json_grammar<boost::property_tree::basic_ptree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::definition<boost::spirit::classic::scanner<__gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >, boost::spirit::classic::scanner_policies<boost::spirit::classic::skip_parser_iteration_policy<boost::spirit::classic::alternative<boost::spirit::classic::alternative<boost::spirit::classic::space_parser, boost::spirit::classic::confix_parser<boost::spirit::classic::strlit<char const*>, boost::spirit::classic::kleene_star<boost::spirit::classic::anychar_parser>, boost::spirit::classic::alternative<boost::spirit::classic::eol_parser, boost::spirit::classic::end_parser>, boost::spirit::classic::unary_parser_category, boost::spirit::classic::non_nested, boost::spirit::classic::is_lexeme> >, boost::spirit::classic::confix_parser<boost::spirit::classic::strlit<char const*>, boost::spirit::classic::kleene_star<boost::spirit::classic::anychar_parser>, boost::spirit::classic::strlit<char const*>, boost::spirit::classic::unary_parser_category, boost::spirit::classic::non_nested, boost::spirit::classic::is_lexeme> >, boost::spirit::classic::iteration_policy>, boost::spirit::classic::match_policy, boost::spirit::classic::action_policy> > >::start() const) 
    "boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*)", referenced from: 
     boost::filesystem::exists(boost::filesystem::path const&) in Bcf.o 
    "boost::filesystem::detail::file_size(boost::filesystem::path const&,boost::system::error_code*)", referenced from: 
     boost::filesystem::file_size(boost::filesystem::path const&) in Bcf.o 
ld: symbol(s) not found for architecture x86_64 

Boost a été construit après la mise à jour et cela a fonctionné avant

J'ai essayé construire en utilisant MacPorts ou homebrew, mais cela casse tout .. .

Répondre

1

Voici la recette que je construisais Boost sur 10,8 (avec le dernier Xcode de l'App Store) qui fonctionne vraiment:

  1. Télécharger http://sourceforge.net/projects/boost/files/boost/1.50.0/boost_1_50_0.tar.bz2/download

  2. tar jxvf boost_1_50_0.tar.bz2 && cd "boost_1_50_0/"

  3. ./bootstrap.sh --prefix=/opt/boost-1.50

  4. (en tant qu'utilisateur admin) sudo ./b2 install

  5. sudo ln -snf boost-1.50 /opt/boost

+0

Êtes-vous sûr de l'étape 5? Cela semble contredire l'étape 3. Mes fichiers boost se retrouvent dans boost_1_50_0/boost et bootstrap.sh crée /opt/boost-1.50. – alecail

+0

La dernière étape n'est pas critique, elle me donne juste un moyen de faire fonctionner les choses avec un chemin sans version. Chaque fois que je compile de nouvelles versions de paquets, je mets à jour ces types de liens pour pointer vers la dernière version. –