Articles of boost

提升日志,GCC 4.4和CMake

我正在尝试使用GCC 4.4.5,CMake 2.8.2和Boost 1.53.0在Linux上运行一个简单的boost.log示例。 编译boost和boost日志成功了,但是当我的testing程序连接到boost.log时,我一直在收到问题。 我使用下面的CMakeLists.txt文件: cmake_minimum_required(VERSION 2.8) project(QuantibBoostLogTest) # Include boost headers set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_MULTITHREADED ON) find_package(Threads) find_package(Boost 1.53.0 COMPONENTS thread date_time filesystem system log log_setup REQUIRED) if(Boost_FOUND) include_directories( ${Boost_INCLUDE_DIRS} ) link_libraries(${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES}) else(Boost_FOUND) message(FATAL_ERROR "Cannot build Quantib Boost Log test without Boost. Please set Boost_DIR.") endif(Boost_FOUND) add_executable(quantibBoostLogTest boost_log_test.cxx) install(TARGETS quantibBoostLogTest DESTINATION .) CMake确实检测到boost库,但我仍然得到链接器错误,主要是forms: […]

为什么使用std :: thread :: hardware_concurrency()和boost :: thread :: hardware_concurrency()有区别?

问题本身的描述非常简单。 我正在testing在C + + 11和boost ::线程库的std ::线程库的差异。 这些输出: #include <iostream> #include <thread> #include <boost/thread.hpp> int main() { std::cout << std::thread::hardware_concurrency() << std::endl; std::cout << boost::thread::hardware_concurrency() << std::endl; return 0; } 给了我不同的结果: 0 4 这是为什么? PS:gcc软件包的版本是4.6.2-1.fc16(x86_64)。 我在用着 g++ test.cc -Wall -std=c++0x -lboost_thread-mt -lpthread

试图静态链接提升

我正在使用Boost库在Linux,Eclipse CDT,g ++中工作。 现有的使用Boost线程的程序,我尝试静态而不是dynamic地链接它。 / usr / local / lib目录包含以下文件: libbost_thread.a libbost_thread.so libbost_thread.1.41.0 dynamic链接工作: g++ -o"MyProgram" ./main.o -lboost_thread 静态链接: g++ -static -o"MyProgram" ./main.o -lboost_thread 产生大量的消息,如: 未定义的引用'pthread_mutex_init' 我怎样才能静态链接到Boost库?

在Linux中链接Boost库

我正在尝试使用Boost的Asio来构build一个项目,而且我遇到了一些麻烦。 最初,我试图build立没有任何额外的库的项目,因为一切都应该在头文件。 我正在尝试构build的程序如下所示: #include <iostream> #include <boost/asio.hpp> #include <boost/date_time/posix_time/posix_time.hpp> int main() { boost::asio::io_service io; boost::asio::deadline_timer t(io, boost::posix_time::seconds(5)); t.wait(); std::cout << "Hello, world!" << std::endl; return 0; } 它可以在Boost的网站上find。 所以,最初我只是: -I /usr/include/boost_1_40_0 这导致了以下错误: make -k all Building target: HelloWorld Invoking: GCC C++ Linker g++ -o"HelloWorld" ./main.o ./main.o: In function `__static_initialization_and_destruction_0': /usr/include/boost_1_40_0/boost/system/error_code.hpp:205: undefined reference to `boost::system::get_system_category()' /usr/include/boost_1_40_0/boost/system/error_code.hpp:206: […]

创buildLinux make / build文件

我将一个C ++项目从Windows移到Linux,现在我需要创build一个build / make文件。 我以前从来没有创build过构build/制作文件。 我还需要包含Boost库以使其更加复杂。 它也必须是一个makefile,我需要学习如何创buildmakefile,所以CMake和SCON都不在了。 由于Boost的使用,IDE也出来了,我所有的IDE(Eclipse,VS等)都只能在windows上运行。 我必须从头开始生成一个makefile。 那么创build一个Linux c ++ make文件的基础是什么,以及如何将Boost库合并到一起以便正确链接? 到目前为止,我的makefile看起来像这样。 我认为CFLAGS和LDFLAGS是编译器和优化选项,但不完全确定。 CC = g++ CFLAGS = -wall -o3 – c LDFLAGS = -03 -mfp-rounding-mode=n 我提供一个赏金,因为我仍然很迷茫。 如果有人感到冒险,我需要在Linux中编译以下内容 simple_ls.h simple_ls.cpp 2dquicksort.h rawr.h rawr.cpp converter.cpp simple_ls.h中的头文件: #include "boost/filesystem/operations.hpp" #include "boost/filesystem/path.hpp" #include "boost/lexical_cast.hpp" #include <iostream> #include <vector> #include <string> #include <algorithm> 2dquicksort.h中的头文件: #include <stdio.h> #include […]

版本'CXXABI_1.3.8'找不到(需要…)

当我编译后运行我的程序时,出现以下错误: ./prog:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:版本CXXABI_1.3.8' not found (required by ./prog) ./prog: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.19'找不到(需要./prog)./prog:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:找不到版本'GLIBCXX_3.4.20'( /home/arman/lib/boost_1_55_0/stage/lib/libboost_serialization.so.1.55.0需要) 我同时在~/lib/boost_1_55_0和~/lib/gcc-4.9.0分别安装了~/lib/boost_1_55_0和~/lib/gcc-4.9.0 ,我猜这就是为什么我有问题,但是我不确定关于如何去解决它。 我的~/.profile包含以下行: export LD_LIBRARY_PATH = / home / user / lib / boost_1_55_0 / stage / lib:$ LD_LIBRARY_PATH

exception运行boost asio ssl例子

我试图从boost :: asio运行SSL示例,我得到一个“无效的参数”exception,当我运行它们。 我在Linux x86_64上。 http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/example/ssl/client.cpp http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/example/ssl/server.cpp 编译: g++ server.cpp -o server -lboost_system -lssl g++ client.cpp -o client -lboost_system -lssl 运行如下: $ ./server Usage: server <port> $ ./server 10000 Exception: Invalid argument $ ./server 1000 Exception: Permission denied $ sudo ./server 1000 Exception: Invalid argument 不知道是什么问题:(任何帮助将不胜感激。 谢谢!

用C ++有效地阅读一个非常大的文本文件

我有一个非常大的文本文件(45GB)。 文本文件的每一行都包含两个空格分隔的64位无符号整数,如下所示。 4624996948753406865 10214715013130414417 4305027007407867230 4569406367070518418 10817905656952544704 3697712211731468838 … 我想读取文件并对数字执行一些操作。 我在C ++中的代码: void process_data(string str) { vector<string> arr; boost::split(arr, str, boost::is_any_of(" \n")); do_some_operation(arr); } int main() { unsigned long long int read_bytes = 45 * 1024 *1024; const char* fname = "input.txt"; ifstream fin(fname, ios::in); char* memblock; while(!fin.eof()) { memblock = new char[read_bytes]; fin.read(memblock, read_bytes); […]

在.NET中获取目录数据的最快方法

我正在使用文件同步服务来同步不同机器上的两个文件夹之间的文件。 我需要find一个非常快速的方式来枚举一个目录,并从中获取以下信息: 该目录中所有文件path和子目录path的数据结构或结构,包括每个文件或子目录的最后写入时间。 对于当前目录下任何级别的每个子目录,与上述相同。 到目前为止,我已经想出了这个: static void Main(string[] args) { List<Tuple<string, DateTime>> files = new List<Tuple<string, DateTime>>(); List<Tuple<string, DateTime>> directories = new List<Tuple<string, DateTime>>(); Stopwatch watch = new Stopwatch(); while (true) { watch.Start(); while (!CheckFolderRecursiveSingleThreaded("C:\\", out files, out directories)) { // You can assume for all intents and purposes that drive C does exist and […]

升压+ Visual Studio 2010 + Windows平台SDK 7.1

有人能告诉我一个命令行开关bjam或其他什么东西,将使用新的Windows平台SDK 7.1工具链VS2010的boost编译? 这是您可以在普通的Visual Studio项目中设置的选项。 默认值是v100平台7.0工具链的变体。 提前致谢。