我最近將我的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