2013-03-05 3 views
1

이 페이지에서 mac 10.s (Mountain Lion)에 대한 의존도를 (http://ardour.org) 설치하려고합니다 : http://ardour.org/building_osx_native.html.libsigC++ 빌드가 실패했습니다 (std :: basic_ostream 명시 적 인스턴스화)

그것을 할 열정의 devs에 의해 만들어진 두 개의 스크립트가 있습니다

  • 구축 GTK 스택 (GTK +, 입심, pango와, 카이로는 ...)
  • 구축 열정 스택 (부스트, rapto, libvorbis ...)

이들은 subversion.ardour.org/svn/ardour2/branches/2.0-ongoing/tools/에서 찾을 수 있습니다.

특히 libsigC++를 빌드 할 때 build-ardor-stack 스크립트에 문제가 있습니다.

나는이 추적있어 :

[...] 
libtool: compile: g++ -DHAVE_CONFIG_H -I.. -I.. -Wall -g -O2 -MT adaptors/lambda/lambda.lo -MD -MP -MF adaptors/lambda/.deps/lambda.Tpo -c adaptors/lambda/lambda.cc -fno-common -DPIC -o adaptors/lambda/.libs/lambda.o 
/bin/sh ../libtool --tag=CXX --mode=link g++ -Wall -g -O2 -no-undefined -version-info 0:0:0 -headerpad_max_install_names -o libsigc-2.0.la -rpath /Users/maxime/a3/inst/lib signal.lo signal_base.lo trackable.lo connection.lo functors/slot.lo functors/slot_base.lo adaptors/lambda/lambda.lo 
libtool: link: g++ -dynamiclib -o .libs/libsigc-2.0.0.dylib .libs/signal.o .libs/signal_base.o .libs/trackable.o .libs/connection.o functors/.libs/slot.o functors/.libs/slot_base.o adaptors/lambda/.libs/lambda.o -O2 -install_name /Users/maxime/a3/inst/lib/libsigc-2.0.0.dylib -compatibility_version 1 -current_version 1.0 -Wl,-single_module 
libtool: link: (cd ".libs" && rm -f "libsigc-2.0.dylib" && ln -s "libsigc-2.0.0.dylib" "libsigc-2.0.dylib") 
libtool: link: (cd ".libs" && rm -f "libsigc-2.0.la" && ln -s "../libsigc-2.0.la" "libsigc-2.0.la") 
Making all in tests 
make[2]: Nothing to be done for `all'. 
Making all in examples 
g++ -DHAVE_CONFIG_H -I.. -I.. -Wall -g -O2 -MT hello_world.o -MD -MP -MF .deps/hello_world.Tpo -c -o hello_world.o hello_world.cc 
g++ -DHAVE_CONFIG_H -I.. -I.. -Wall -g -O2 -MT member_method.o -MD -MP -MF .deps/member_method.Tpo -c -o member_method.o member_method.cc 
hello_world.cc: In instantiation of ‘std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]’: 
hello_world.cc:18: instantiated from here 
hello_world.cc:18: error: explicit instantiation of ‘std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]’ but no definition available 
hello_world.cc: In instantiation of ‘std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]’: 
hello_world.cc:18: instantiated from here 
hello_world.cc:18: error: explicit instantiation of ‘std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]’ but no definition available 
hello_world.cc: In instantiation of ‘std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]’: 
hello_world.cc:18: instantiated from here 
hello_world.cc:18: error: explicit instantiation of ‘std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]’ but no definition available 
make[2]: *** [hello_world.o] Error 1 
make[2]: *** Waiting for unfinished jobs.... 
mv -f .deps/member_method.Tpo .deps/member_method.Po 
make[1]: *** [all-recursive] Error 1 
make: *** [all] Error 2 
libsigcpp build failed 

hello_world.cc :

#include <iostream> 
#include <string> 
#include <sigc++/sigc++.h> 

SIGC_USING_STD(cout) 
SIGC_USING_STD(endl) 
SIGC_USING_STD(string) 

void on_print(const std::string& str) 
{ 
    std::cout << str; 
} 

int main() 
{ 
    sigc::signal<void, const std::string&> signal_print; 
    signal_print.connect(sigc::ptr_fun(&on_print)); 
    signal_print.emit("hello world\n"); 
    return 0; 
} 

내 GCC는 다음과 같습니다

i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00). 

당신은 어떻게 생각하십니까?

감사합니다.

답변

1

메일 링리스트를 사용하여 libsigC++ devs에게 질문했습니다. 나는 그들이 나에게 시도 해달라고 부탁 한 해결책을 여기에 게시한다. 내 경우에는 그들 중 누구도 문제를 해결하지 않았다 :

  • 제거 SIGC_USING_STD 매크로를
  • -std = C + +0 컴파일러 플래그 메이크 아웃
  • 에 주석 hello_world.cc

또한 컴파일러에 다음 옵션을 추가하려고했습니다. -mmacosx-version-min = 10.8.

나는 다른 사람들이 내가 시도한 것을 컴파일하는데 성공했음을 들었다. 그것은 맥 오에스 (10.8)와 같은 버전이었다. 그래서 문제는 내 부분에서 오는 것 같습니다 ...

관련 문제