前提・実現したいこと
boost::filesystemを使ってディレクトリを作成するプログラムを書きたいと思っています。
こちらのディレクトリを作成するというところのサンプルプログラムを実行しようとしているのですが以下のようなエラーが出てしまいうまくいきません。
clang: error: linker command failed with exit code 1 (use -v to see invocation)
こちらのエラーが「ライブラリが足りていない」というエラーらしいとはわかったのですが、何が足りていないのか全く見当がつかないという状況です、、(上部のエラーにも検討がついていません)
発生している問題・エラーメッセージ
Undefined symbols for architecture x86_64: "boost::filesystem::detail::create_directory(boost::filesystem::path const&, boost::system::error_code*)", referenced from: _main in sample-903ef4.o "boost::system::system_category()", referenced from: _main in sample-903ef4.o __GLOBAL__sub_I_sample.cpp in sample-903ef4.o "boost::system::generic_category()", referenced from: __GLOBAL__sub_I_sample.cpp in sample-903ef4.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
該当のソースコード
#include <iostream> #include <boost/filesystem.hpp> namespace fs = boost::filesystem; int main() { const fs::path path("dir"); boost::system::error_code error; const bool result = fs::create_directory(path, error); if (!result || error) { std::cout << "ディレクトリの作成に失敗" << std::endl; } }
まず、boostは正常にインストールされていますか?
/user/local/include/に入っていることは確認できています。他でEigenというライブラリを使っているのですが、こちらも同じ場所にあって、使えてはいるんですよね
パスは通ってますか?
$ clang++ main.cpp -Wl,/usr/local/lib/libboost_filesystem.a
でどうです?
家では、c++ bt.cpp -Wl,/usr/lib/libboost_filesystem.a で、コンパイル&実行できました。
c++ は、clang++のaliasですd^^ 環境:Linux .Mint191 clang version 8.0.0 boost_1_69_0
みなさん回答ありがとうございます。現状は、
g++ -I/usr/local/include sample.cpp -L/usr/local/lib -lboost_filesystem
という感じでコンパイルを試みているのですが、やはり、
clang: error: linker command failed with exit code 1 (use -v to see invocation)
このエラーが出てきている感じです、、
boostのビルをはしてみました
すみません、
symbol(s) not found for architecture x86_64
このようなエラーも出たままでした