我试图使用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