0

わかりましたので、今は Linux (Ubuntu 12.04) でブースト C++ ライブラリを使用しようとしています。以前は Windows で使用していました。Boostのサイトのサンプルコードを使用すると

テストファイル.cpp

#include <boost/filesystem/convenience.hpp>
#include <boost/foreach.hpp>
#include <boost/range.hpp>
#include <iostream>

int main(int, char**)
{
    namespace bf = boost::filesystem;
    BOOST_FOREACH(bf::path path,
        boost::make_iterator_range(
            bf::recursive_directory_iterator(bf::path("/home")),
            bf::recursive_directory_iterator())) {
    std::cout << path.string() << std::endl;
}
return 0;
}

このコマンドを使用して非常に簡単にコンパイルする必要があります

g++ -L/usr/local/lib -o "testfile" -llibboost_filesystem

私の問題リンカエラーが発生しています

/usr/bin/ld: cannot find -llibboost_filesystem

私が欠けているものを理解できないようです。助けてください。

4

1 に答える 1

0

慣例により、ライブラリ名はlibほとんどの Linux ディストリビューションでプレフィックスを使用します。検索するライブラリをリンカーに指示するときは、このプレフィックスを削除する必要があります。gnuldリンカーを想定すると、ドキュメントには次のように記載されています

-l namespec
--library=namespec

   Add the archive or object file specified by namespec to the list of files to 
   link.  This option may be used any number of times.  If namespec is of the 
   form :filename, ld will search the library path for a file called filename, 
   otherwise it will search the library path for a file called libnamespec.a.

だからあなたはどちらかが欲しい

g++ -L/usr/local/lib -o "testfile" -lboost_filesystem

また

g++ -L/usr/local/lib -o "testfile" -l :libboost_filesystem.so
于 2013-08-01T16:45:23.777 に答える