2015-10-27 130 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目錄中尋找標題並解決問題。