2015-10-27 125 views
1

我最近将我的Mac OSX从Yosemite升级到了El Capitan,并将Xcode升级到v7.1。升级后,我发现我的C++应用程序不再编译由于无法找到一个头文件:如何在Mac OSX El Capitan上替换boost/thread/tss.hpp?

../../src/dir/sysArea.h:39:10: fatal error: 'boost/thread/tss.hpp' file not found 
#include <boost/thread/tss.hpp> 

铛的调用是这样的:

clang -g -std=c++11 -fno-inline -Wall -Werror -Wextra -D_LARGEFILE_SOURCE \ 
     -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -c      \ 
     -o ARCH.darwin_15_i86/debug/file.o file.cpp 

我搜索使用我的Macintosh电脑查找程序和文件tss.hpp不再显示为存在。如何将我的应用程序移植到El Capitan,什么是替代Boost的tss.hpp?我尝试将我的Boost版本从之前的v1.53更新到最新的v1.58,但它没有影响,编译时出现同样的错误。

export PATH=/usr/local/bin:$PATH 
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 
sudo chmod o+w /usr/local/opt /usr/local/include /usr/local/lib 
brew unlink boost 
brew install boost 
sudo chmod o-w /usr/local/opt /usr/local/include /usr/local/lib 

我的C++ 03的应用程序包括tss.hpp,以便它可以使用thread_specific_ptr<>功能:(例如,每个线程都有自己的静态变量的版本)

static boost::thread_specific_ptr<Botan::AutoSeeded_RNG> _rng; 

用于线程本地存储


取景器并没有到处寻找(将是很好,如果它没有),我有/usr/local/includetss.hpp

我尝试添加-stdlib=libc++-stdlib=libstdc++到铛调用,但也得到了编译器在/ usr/local/include寻找Boost的头一下。什么样的编译器标志会指示它看起来不是硬编码-I/user/local/include

请注意,clang表示thread_local不可用作为discussed here

+0

另外,你是否愿意转向C++ 11?然后,你可以放弃这一点,只是使用'thread_local' – donkopotamus

+0

@donkopotamus是的,我现在正在考虑与'thread_local'这个选项,但仍然会回答这个问题。 – WilliamKF

+1

你能否确认'boost/thread/tss.hpp'不在'/ usr/local/include'中......如果不是'brew'安装似乎是个问题。 (我不使用'brew')。如果是,那么你的编译器标志是否正确? – donkopotamus

回答

0

根据this answerxcode-select --install,似乎已经告诉clang在/usr/local/include目录中寻找标题并解决问题。