编译 libc++随着叮当声++在Ubuntu中

发布于 2024-11-17 07:28:19 字数 5501 浏览 3 评论 0原文

我的操作系统是 Ubuntu-11.04 我按照用户手册成功地用 clang 编译了 llvm 。 然后我尝试用 clang++ 编译 libcxx, 我通过阅读以下内容对 $LIBCXX_DIR/lib/buildit.sh 进行了修改

http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-February/013228.html

修改后的文件 $LIBCXX_DIR/lib/buildit 粘贴在错误消息之后。

修改后的 buildit.sh 我收到以下错误。看来 clang++ 不能 成功编译头文件“string”。 这是完整的编译报告:

vmplanet@kubuntu-vm:~/usr/libcxx/lib$ ./buildit 
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include
../src/algorithm.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include ../src/bind.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include ../src/chrono.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include
../src/condition_variable.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include
../src/exception.cpp
../src/exception.cpp:85:6: warning: #warning uncaught_exception not yet
implemented [-W#warnings]
    #warning uncaught_exception not yet implemented
     ^
../src/exception.cpp:119:6: warning: #warning exception_ptr not yet implemented
[-W#warnings]                                                                   
    #warning exception_ptr not yet implemented
     ^
../src/exception.cpp:130:6: warning: #warning exception_ptr not yet implemented
[-W#warnings]                                                                   
    #warning exception_ptr not yet implemented
     ^
../src/exception.cpp:146:6: warning: #warning exception_ptr not yet implemented
[-W#warnings]                                                                   
    #warning exception_ptr not yet implemented
     ^
../src/exception.cpp:181:6: warning: #warning exception_ptr not yet implemented
[-W#warnings]                                                                   
    #warning exception_ptr not yet implemented
     ^
../src/exception.cpp:193:6: warning: #warning exception_ptr not yet implemented
[-W#warnings]                                                                   
    #warning exception_ptr not yet implemented
     ^
6 warnings generated.                                                           
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include ../src/future.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include ../src/hash.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include ../src/ios.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include ../src/iostream.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include ../src/locale.cpp
In file included from ../src/locale.cpp:10:
../include/string:2122:10: error: overload resolution selected deleted operator
'='
    __r_ = _STD::move(__str.__r_);
    ~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~
../include/string:2133:5: note: in instantiation of member function
'std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >::__move_assign'      
      requested here
    __move_assign(__str, integral_constant<bool,
    ^
../src/locale.cpp:4772:10: note: in instantiation of member function
'std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >::operator='         
      requested here
    __c_ = __analyze('c', ct);
         ^
../include/memory:2050:7: note: candidate function (the implicit copy
assignment operator) has been explicitly deleted                                
class __compressed_pair
      ^
In file included from ../src/locale.cpp:10:                                     
../include/string:2122:10: error: overload resolution selected deleted operator
'='
    __r_ = _STD::move(__str.__r_);
    ~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~
../include/string:2133:5: note: in instantiation of member function
'std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>,
std::__1::allocator<wchar_t>               
      >::__move_assign' requested here
    __move_assign(__str, integral_constant<bool,
    ^
../include/locale:2796:15: note: in instantiation of member function
'std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>,
std::__1::allocator<wchar_t> >::operator='
      requested here
        __nsn = __mp.negative_sign();
              ^
../include/memory:2050:7: note: candidate function (the implicit copy
assignment operator) has been explicitly deleted                                
class __compressed_pair
      ^
2 errors generated.

//buildit.sh

#! /bin/sh
#
# Set the $TRIPLE environment variable to your system's triple before
# running this script.  If you set $CXX, that will be used to compile
# the library.  Otherwise we'll use clang++.

set -e

if [ `basename $(pwd)` != "lib" ]
then
  echo "current directory must be lib"
  exit 1
fi

CXX=clang++
CC=clang

if [ -z $RC_ProjectSourceVersion ]
then
  RC_ProjectSourceVersion=1
fi

EXTRA_FLAGS="-std=c++0x "
    EXTRA_FLAGS="-std=c++0x"
    LDSHARED_FLAGS="-o libc++.so.1.0 \
      -shared -nodefaultlibs -Wl,-soname,libc++.so.1 \
      -lpthread -lrt -lc -lstdc++"

    RC_CFLAGS="-fPIC"
    SOEXT=so

for FILE in ../src/*.cpp; do
  echo $CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -nostdinc++ -I../include $FILE
  $CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -nostdinc++ -I../include $FILE
done

$CC *.o $RC_CFLAGS $LDSHARED_FLAGS $EXTRA_FLAGS

#libtool -static -o libc++.a *.o

if [ -z $RC_XBS ]
then
    rm *.o
fi

My OS is Ubuntu-11.04
i compiled llvm with clang as per the user manual successfully.
then i tried to compile libcxx with clang++,
i made modifications to the $LIBCXX_DIR/lib/buildit.sh by reading the following

http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-February/013228.html

The modified file $LIBCXX_DIR/lib/buildit is pasted after the error message.

with the modified buildit.sh i get following errors. It seems clang++ is unable
to compile the header file 'string' successfully.
Here is the complete compilation report:

vmplanet@kubuntu-vm:~/usr/libcxx/lib$ ./buildit 
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include
../src/algorithm.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include ../src/bind.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include ../src/chrono.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include
../src/condition_variable.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include
../src/exception.cpp
../src/exception.cpp:85:6: warning: #warning uncaught_exception not yet
implemented [-W#warnings]
    #warning uncaught_exception not yet implemented
     ^
../src/exception.cpp:119:6: warning: #warning exception_ptr not yet implemented
[-W#warnings]                                                                   
    #warning exception_ptr not yet implemented
     ^
../src/exception.cpp:130:6: warning: #warning exception_ptr not yet implemented
[-W#warnings]                                                                   
    #warning exception_ptr not yet implemented
     ^
../src/exception.cpp:146:6: warning: #warning exception_ptr not yet implemented
[-W#warnings]                                                                   
    #warning exception_ptr not yet implemented
     ^
../src/exception.cpp:181:6: warning: #warning exception_ptr not yet implemented
[-W#warnings]                                                                   
    #warning exception_ptr not yet implemented
     ^
../src/exception.cpp:193:6: warning: #warning exception_ptr not yet implemented
[-W#warnings]                                                                   
    #warning exception_ptr not yet implemented
     ^
6 warnings generated.                                                           
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include ../src/future.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include ../src/hash.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include ../src/ios.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include ../src/iostream.cpp
clang++ -c -g -Os -fPIC -std=c++0x -nostdinc++ -I../include ../src/locale.cpp
In file included from ../src/locale.cpp:10:
../include/string:2122:10: error: overload resolution selected deleted operator
'='
    __r_ = _STD::move(__str.__r_);
    ~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~
../include/string:2133:5: note: in instantiation of member function
'std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >::__move_assign'      
      requested here
    __move_assign(__str, integral_constant<bool,
    ^
../src/locale.cpp:4772:10: note: in instantiation of member function
'std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >::operator='         
      requested here
    __c_ = __analyze('c', ct);
         ^
../include/memory:2050:7: note: candidate function (the implicit copy
assignment operator) has been explicitly deleted                                
class __compressed_pair
      ^
In file included from ../src/locale.cpp:10:                                     
../include/string:2122:10: error: overload resolution selected deleted operator
'='
    __r_ = _STD::move(__str.__r_);
    ~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~
../include/string:2133:5: note: in instantiation of member function
'std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>,
std::__1::allocator<wchar_t>               
      >::__move_assign' requested here
    __move_assign(__str, integral_constant<bool,
    ^
../include/locale:2796:15: note: in instantiation of member function
'std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>,
std::__1::allocator<wchar_t> >::operator='
      requested here
        __nsn = __mp.negative_sign();
              ^
../include/memory:2050:7: note: candidate function (the implicit copy
assignment operator) has been explicitly deleted                                
class __compressed_pair
      ^
2 errors generated.

//buildit.sh

#! /bin/sh
#
# Set the $TRIPLE environment variable to your system's triple before
# running this script.  If you set $CXX, that will be used to compile
# the library.  Otherwise we'll use clang++.

set -e

if [ `basename $(pwd)` != "lib" ]
then
  echo "current directory must be lib"
  exit 1
fi

CXX=clang++
CC=clang

if [ -z $RC_ProjectSourceVersion ]
then
  RC_ProjectSourceVersion=1
fi

EXTRA_FLAGS="-std=c++0x "
    EXTRA_FLAGS="-std=c++0x"
    LDSHARED_FLAGS="-o libc++.so.1.0 \
      -shared -nodefaultlibs -Wl,-soname,libc++.so.1 \
      -lpthread -lrt -lc -lstdc++"

    RC_CFLAGS="-fPIC"
    SOEXT=so

for FILE in ../src/*.cpp; do
  echo $CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -nostdinc++ -I../include $FILE
  $CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -nostdinc++ -I../include $FILE
done

$CC *.o $RC_CFLAGS $LDSHARED_FLAGS $EXTRA_FLAGS

#libtool -static -o libc++.a *.o

if [ -z $RC_XBS ]
then
    rm *.o
fi

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可爱咩 2024-11-24 07:28:19

好吧,错误消息已经解释清楚了,请参阅 Howard Hinnant 对我的问题的回答: clang 3.0 + libc++ 中的 std::async 不起作用?
我猜那是同一个地方。

Well, the error message explains itself, see Howard Hinnant's answer to my question: std::async in clang 3.0 + libc++ doesn't work?
I guess that's the same place.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文