2012-05-02 4 views
5

Я пытаюсь инициализировать функцию списков в C++ 11, используя clang, установленную MacPorts. При составлении этого простого кода:MacPorts Clang 3.1 отсутствует Стандартная установка библиотеки?

#include <vector> 

int main() 
{ 
    std::vector<int> a {1, 3, 5}; 
    return 0; 
} 

Я получил эту ошибку:

stephen-chus-mac-pro:~ stephenchu$ clang -std=c++0x -c text.cxx -I/opt/local/include -v 
clang version 3.1 (trunk 154872) 
Target: x86_64-apple-darwin10.8.0 
Thread model: posix 
"/opt/local/libexec/llvm-3.1/bin/clang" -cc1 -triple x86_64-apple-macosx10.6.0 -emit-obj -mrelax-all -disable-free -main-file-name text.cxx -pic-level 2 -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 127.2 -v -coverage-file text.o -resource-dir /opt/local/libexec/llvm-3.1/bin/../lib/clang/3.1 -I /opt/local/include -fmodule-cache-path /var/folders/UL/ULMxdJJtEQuI+WuToNAFpk+++TI/-Tmp-/clang-module-cache -std=c++0x -fdeprecated-macro -fdebug-compilation-dir /Users/stephenchu -ferror-limit 19 -fmessage-length 80 -stack-protector 1 -mstackrealign -fblocks -fobjc-dispatch-method=mixed -fobjc-default-synthesize-properties -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o text.o -x c++ text.cxx 
clang -cc1 version 3.1 based upon LLVM 3.1svn default target x86_64-apple-darwin10.8.0 
#include "..." search starts here: 
#include <...> search starts here: 
/opt/local/include 
/usr/include/c++/4.2.1 
/usr/include/c++/4.2.1/i686-apple-darwin10/x86_64 
/usr/include/c++/4.2.1/backward 
/usr/include/c++/4.0.0 
/usr/include/c++/4.0.0/i686-apple-darwin8 
/usr/include/c++/4.0.0/backward 
/usr/local/include 
/opt/local/libexec/llvm-3.1/bin/../lib/clang/3.1/include 
/usr/include 
/System/Library/Frameworks (framework directory) 
/Library/Frameworks (framework directory) 
End of search list. 
text.cxx:5:19: error: no matching constructor for initialization of 
     'std::vector<int>' 
     std::vector<int> a {1, 3, 5}; 
         ^~~~~~~~~~ 
/usr/include/c++/4.2.1/bits/stl_vector.h:255:9: note: candidate constructor 
     [with _InputIterator = int] not viable: no known conversion from 'int' to 
     'const allocator_type' (aka 'const std::allocator<int>') for 3rd argument; 
     vector(_InputIterator __first, _InputIterator __last, 
     ^
/usr/include/c++/4.2.1/bits/stl_vector.h:213:7: note: candidate constructor not 
     viable: no known conversion from 'int' to 'const allocator_type' (aka 
     'const std::allocator<int>') for 3rd argument; 
     vector(size_type __n, const value_type& __value = value_type(), 
    ^
/usr/include/c++/4.2.1/bits/stl_vector.h:201:7: note: candidate constructor not 
     viable: requires at most 1 argument, but 3 were provided 
     vector(const allocator_type& __a = allocator_type()) 
    ^
/usr/include/c++/4.2.1/bits/stl_vector.h:231:7: note: candidate constructor not 
     viable: requires 1 argument, but 3 were provided 
     vector(const vector& __x) 
    ^
1 error generated. 

Это, кажется, включает в себя заголовки из системы НКИ (4.2). И я не могу найти какие-либо специальные заголовки. Какой пакет я должен установить из MacPorts для этого? Или мне нужно установить и установить libC++ clang?

+1

[Я действительно надеюсь, что вы имеете в виду «стандартную библиотеку C++», а не STL.] (Http://stackoverflow.com/questions/5205491/whats-this-stl-vs-c-standard-library-fight-all- о/5205571 # 5205571) – Griwes

+0

@Griwes да. Я отредактировал вопрос, чтобы это отразить. Извините за неправильный термин. –

ответ

3

Сначала вам необходимо установить стандартную библиотеку с '-stdlib = LibC++

Тогда вы, возможно, потребуется обновление заголовков. Новейшие заголовки libC++ будут работать с libC++ libs, установленными с OS X 10.7 и выше.

Я не знаю, что macports имеет libC++, но поскольку все, что вам нужно, это заголовки, вы должны просто загрузить их и поместить их в каталог include рядом с тем местом, где установлен clang.

+0

Спасибо. Я забыл упомянуть об этом с OS X 10.6 и Xcode 4.2, у которого нет libC++ (не то, что я могу найти). Я буду устанавливать заголовки libC++ и посмотреть. –

+0

Построен и установлен libC++ из источника, и теперь он работает. Благодарю. –

Смежные вопросы