2010-04-14 112 views
2

我不能爲我的生活弄清楚如何編譯和鏈接到我的Mac上的英特爾TBB庫。我已經運行商業安裝程序和tbbvars.sh腳本,但我無法弄清楚。我有一種感覺,這是一件非常明顯的事情,自從我做了這種事情之後,這已經有點太長了。如何在Mac OS X上使用GCC與Intel TBB進行鏈接?

tbb_test.cpp

#include <tbb/concurrent_queue.h> 

int main() { 
    tbb::concurrent_queue<int> q; 
} 

g++ tbb_test.cpp -I /Library/Frameworks/TBB.framework/Headers -ltbb

...找不到符號。

乾杯!

UPDATE:

g++ tbb_test.cpp -I /Library/Frameworks/TBB.framework/Headers -L /Library/Frameworks/TBB.framework/Libraries/libtbb.dylib

作品!

+0

@SilverSun,你應該仍然可以使用「-framework」選項......因爲它是等價的,它也會搜索所有框架路徑(也就是說,如果框架位於〜/ Library/Frameworks或/ System/Library/Frameworks中,它也可以工作)。另外,當你有「傘架」時,框架「選項會得到一切,而你需要比你使用的選項更多的選項。 – 2010-04-14 20:32:48

回答

3

由於您使用的不是傳統圖書館的框架,你需要使用-framework,如:

 
g++ tbb_test.cpp -o tbb_test -framework TBB 

相反的:

 
g++ tbb_test.cpp -o tbb_test -I /Library/Frameworks/TBB.framework/Headers -ltbb 
+0

謝謝,但我還是無法讓它工作。乾杯! – 2010-04-14 19:01:19

+0

'-framework'在聯機幫助頁中沒有記錄太多,但我認爲這表明你想要構建一個框架,關於他的問題的最好理論是'tbb'需要大寫。 – Potatoswatter 2010-04-14 19:09:06

+0

@Patatoswatter,「-framework」在Mac OS X的文檔中(這是GCC的Apple擴展)。這意味着你想鏈接到框架,而不是你想建立一個。例如,要與Foundation框架鏈接,請使用「-framework Foundation」。 – 2010-04-14 20:29:45

0

根據的TBB Getting Started Guide(第3頁當前版本),在$ INSTALL/bin目錄中有一些腳本將設置正確的環境變量,如果您在其上運行source(例如source bin/tbbvars.sh)。一旦你這樣做了,你不再需要在你的g++命令行中指定-I-L,這是令人厭煩的,容易出錯的,並且最糟糕的是。但是你仍然需要使用-ltbb:'(這個建議也適用於那些使用其他類Unix操作系統的人,比如Linux。