我最近将我的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/include
下tss.hpp
。
我尝试添加-stdlib=libc++
和-stdlib=libstdc++
到铛调用,但也得到了编译器在/ usr/local/include寻找Boost的头一下。什么样的编译器标志会指示它看起来不是硬编码-I/user/local/include
?
请注意,clang表示thread_local
不可用作为discussed here。
另外,你是否愿意转向C++ 11?然后,你可以放弃这一点,只是使用'thread_local' – donkopotamus
@donkopotamus是的,我现在正在考虑与'thread_local'这个选项,但仍然会回答这个问题。 – WilliamKF
你能否确认'boost/thread/tss.hpp'不在'/ usr/local/include'中......如果不是'brew'安装似乎是个问题。 (我不使用'brew')。如果是,那么你的编译器标志是否正确? – donkopotamus