0

次のヘッダーを含めようとしています。

#include <libs/serialization/example/portable_binary_iarchive.hpp>
#include <libs/serialization/example/portable_binary_oarchive.hpp>

これらのファイルは、次のようなパスにあります。

/home/nobody/boost_1_45_0/libs/serialization/example/portable_binary_iarchive.hpp

私のMakefileに、次のものを追加しました。

-I/home/nobody/boost_1_45_0/libs

ただし、コンパイルすると、次のようなエラーメッセージが表示されます。

error: libs/serialization/example/portable_binary_iarchive.hpp: No such file or directory

誰かが私がここで間違っていることを教えてもらえますか?私はまたのようなブーストライブラリを含めています

#include <boost/archive/binary_oarchive.hpp>

ただし、それらを取得するには、Makefileで行うだけで十分です。

-I/usr/include/boost

他の場所のヘッダーでこれが機能しないのはなぜですか?Makefileをどのように変更すればよいですか?現在の最初のステートメントは次のようになります。

test: test.o 
    g++ -O3 -ffast-math -funroll-loops -ansi -pedantic-errors -L/usr/lib -lboost_filesystem -lboost_serialization -lboost_iostreams -lz -I/usr/include/boost -I/home/nobody/boost_1_45_0/libs -o test test.o
4

1 に答える 1

2

取得するため

#include <libs/serialization/example/portable_binary_iarchive.hpp>

ディレクトリから

/home/nobody/boost_1_45_0/libs/serialization/example/portable_binary_iarchive.hpp

Makefile のニーズ

-I/home/nobody/boost_1_45_0

最後からを省略したことに注意してください/libs。これは、#includeディレクティブが既にそのディレクトリをリストしているためです。


2番目の例については、この場所に必要なファイルです:

/usr/include/boost/boost/archive/binary_oarchive.hpp
                   ^^^^^ (repeated boost here)

そうでない場合、g ++はデフォルト/usr/includeで検索スペースとして設定されている可能性があります

#include <boost/archive/binary_oarchive.hpp>

つまり、あなたの

-I/usr/include/boost

コンパイラには役に立たない。

于 2012-08-08T02:26:32.493 に答える