我試圖使用Boost.Tokenizer庫。在我PROG.cpp
,我有以下幾點:C++:獲得Boost工作;關於包含路徑和鏈接庫的問題
#include <boost/tokenizer.hpp>
而且我Makefile
最初像
CXX = g++-4.8
CXXFLAGS = ## some irrelevant flags
LDFLAGS = ## some irrelevant flags
SOURCES = PROG.cpp
OBJECTS = $(SOURCES:.cpp=.o)
TARGETS = PROG
$(TARGETS) : $(OBJECTS)
$(CXX) $(CXXFLAGS) -o [email protected] $^ $(LDFLAGS)
## other targets
它不會編譯,因爲boost/tokenizer.hpp
無法找到:
fatal error: boost/tokenizer.hpp: No such file or directory
然後我手動添加了包含路徑CXXFLAGS
:
-I/opt/local/include/
(這是從MacPorts的路徑。)
然後我試圖包括標記生成器庫,但在/opt/local/lib/
我有libboost_atomic-mt.dylib
,libboost_chrono-mt.dylib
等,但沒有像tokenizer
。那時我很困惑。由於圖書館沒有鏈接,我認爲這仍然行不通。令人驚訝的是,該程序建立,鏈接和運行完美。
所以我現在很困惑。這裏有一些問題:
(1)我沒有明確鏈接反對boost,所以boost被鏈接器視爲標準庫嗎? (2)如果boost像標準一樣處理,爲什麼頭文件不是標準的?
(3)爲什麼有libboost_atomic-mt.dylib
,libboost_chrono-mt.dylib
等,但不是tokenizer
? tokenizer
屬於哪個動態庫?
我不是很熟悉g++
連接機制;談到提升,這是我第一次提升的計劃。 所以我真的很感謝詳細的解釋。提前致謝!
以供參考,這是我的gcc -print-search-dirs
提取:
install: /usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/
programs: =/usr/gcc-4.8.0/libexec/gcc/x86_64-apple-darwin12.3.0/4.8.0/:/usr/gcc-4.8.0/libexec/gcc/x86_64-apple-darwin12.3.0/4.8.0/:/usr/gcc-4.8.0/libexec/gcc/x86_64-apple-darwin12.3.0/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/../../../../x86_64-apple-darwin12.3.0/bin/x86_64-apple-darwin12.3.0/4.8.0/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/../../../../x86_64-apple-darwin12.3.0/bin/
libraries: =/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/../../../../x86_64-apple-darwin12.3.0/lib/x86_64-apple-darwin12.3.0/4.8.0/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/../../../../x86_64-apple-darwin12.3.0/lib/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/../../../x86_64-apple-darwin12.3.0/4.8.0/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/../../../:/lib/x86_64-apple-darwin12.3.0/4.8.0/:/lib/:/usr/lib/x86_64-apple-darwin12.3.0/4.8.0/:/usr/lib/
謝謝,完全解決了我所有的疑惑。 – 4ae1e1 2013-05-10 07:42:13