我最近将我的Mac OSX从Yosemite升级到El Capitan,并将Xcode更新到v7.1。升级后,我发现我的c++应用程序不再编译,因为找不到头文件:
../../src/dir/sysArea.h:39:10: fatal error: 'boost/thread/tss.hpp' file not found
#include <boost/thread/tss.hpp>
clang调用是这样的:
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++
添加到clang调用中,但都没有让编译器在/usr/local/include中查找Boost头。除了硬编码-I/user/local/include
之外,哪些编译器标志会指示它查看那里?
请注意clang说thread_local
不可用
按照这个答案做xcode-select --install
,似乎已经告诉clang在/usr/local/include
目录中查找头文件并解决了这个问题。