ライブラリをインストールしました~/.local
。環境変数の設定は次のとおりです。
$ echo $LD_LIBRARY_PATH
/home/saga//.local/lib
$ echo $PKG_CONFIG_PATH
/home/saga//.local/lib/pkgconfig
/home/saga//.local/lib/pkgconfig
次の内容のre2.pcファイルがあります。
prefix=/home/saga//.local
exec_prefix=/home/saga//.local
includedir=/home/saga//.local/include
libdir=/home/saga//.local/lib
Name: re2
Description: RE2 is a fast, safe, thread-friendly regular expression engine.
Version: 0.0.0
Cflags: -std=c++11 -pthread -I${includedir}
Libs: -pthread -L${libdir} -lre2
.re2.hを含むre2
プログラムをコンパイルしようとすると、次のエラーが発生します。/home/saga//.local/include
re2.h
$ g++ tst.cpp
tst.cpp:1:9: fatal error: re2/re2.h: No such file or directory
#include<re2/re2.h>
^~~~~~~~~~~
compilation terminated.
そして
$ g++ tst2.cpp
tst.cpp:1:9: fatal error: re2.h: No such file or directory
#include<re2.h>
^~~~~~~
compilation terminated.
の出力はpkg-config --libs re2
次のとおりです。-L/home/saga//.local/lib -pthread -lre2
この問題をどのように解決できますか?
答え1
あなたはそうではありません使用 pkg-config
...
$ g++ $(pkg-config --cflags re2) tst.cpp
答え2
デバッグモードでpkg-configを実行してみることができます。
$ pkg-config --cflags-only-I re2 --debug
次のように印刷する必要があります。
< cut >
Looking for package 're2'
Looking for package 're2-uninstalled'
Reading 're2' from file '/home/saga/.local/lib/pkgconfig/re2.pc'
Parsing package file '/home/saga/.local/lib/pkgconfig/re2.pc'
line>prefix=/home/saga//.local
Variable declaration, 'prefix' has value '/home/saga//local'
line>exec_prefix=/home/saga//.local
Variable declaration, 'exec_prefix' has value '/home/saga//local'
line>includedir=/home/saga//.local/include
Variable declaration, 'includedir' has value '/home/saga//.local/include'
line>libdir=/home/saga//.local/lib
Variable declaration, 'libdir' has value '/home/saga//.local/lib'
line>
line>Name: re2
line>Description: RE2 is a fast, safe, thread-friendly regular expression engine.
line>Version: 0.0.0
line>Cflags: -std=c++11 -pthread -I${includedir}
line>Libs: -pthread -L${libdir} -lre2
Path position of 're2' is 1
Adding 're2' to list of known packages
pre-remove: re2
post-remove: re2
original: re2
sorted: re2
adding CFLAGS_I string "-I/home/saga//.local/include "
returning flags string "-I/home/saga//.local/include "
-I/home/saga//.local/include
最後の行が現在欠落しているものであることがわかります。