3

pyrocksdbの(少し)古いドキュメントから、次のように述べています。

make install"エクスポートを呼び出したくない場合は、次の環境変数:"

$ export CPLUS_INCLUDE_PATH=${CPLUS_INCLUDE_PATH}:`pwd`/include
$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:`pwd`
$ export LIBRARY_PATH=${LIBRARY_PATH}:`pwd`

しかし、RocksDB のインストール手順にinstallは、どのようなターゲットについても言及されていないようです!

ソースから RocksDB をインストールするための受け入れられた手順はありますか?


私の考えでは、ディレクトリの内容をincluderocksdb ディレクトリから次のような場所/usr/local/includeにコピーしlibrocksdb.solibrocksdb.aファイルを にコピーするだけです/usr/local/lib。これは受け入れられる方法ですか?

注:ホームフォルダー内のディレクトリにrocksdbを構築したため、環境変数をエクスポートする方法はあまり好ましくありませんでした-よりクリーンなソリューションを望んでいます(希望どおりに解釈してください)。

4

3 に答える 3

3

install現在の Makefile にはターゲットがありません。

これは、長い間確立されてきた Makefile (または他のほとんどすべてのビルド システム...) を記述するための規則を破ります。それは欠陥と見なされるべきです。

分析に多くの時間を費やさないと確信が持てませんが、インストール先は次のようになります。

prefix=/usr/local
bindir=$(prefix)/bin
# Normally you'd write a macro for this; 'lib' for 32-bit, 'lib64' for 64...
libdir=$(prefix)/lib64
includedir=$(prefix)/include

# Define this to be the directory(s) the headers are installed into.
# This should not include the 'include' element:
#    include/rocksdb/stuff -> rocksdb/stuff
HEADER_DIRS=...

# Define this so all paths are relative to both the $CWD/include directory...
# so include/rocksdb/foo.h -> HEADER_FILES=rocksdb/foo.h
HEADER_FILES=...

.PHONY: install
install: $(TOOLS) $(LIBRARY) $(SHARED) $(MAKEFILES)
     mkdir -p $(DESTDIR)$(bindir)
     mkdir -p $(DESTDIR)$(libdir)
     mkdir -p $(DESTDIR)$(includedir)
     for tool in $(TOOLS); do \
         install -m 755 $$tool $(DESTDIR)$(bindir); \
     done
     # No, libraries should NOT be executable on Linux.
     install -m 644 $(LIBRARY) $(DESTDIR)$(libdir)
     install -m 644 $(SHARED3) $(DESTDIR)$(libdir)
     ln -s $(SHARED3) $(DESTDIR)$(libdir)/$(SHARED2)
     ln -s $(SHARED2) $(DESTDIR)$(libdir)/$(SHARED1)
     for header_dir in $(HEADER_DIRS); do \
         mkdir -p $(DESTDIR)$(includedir)/$$header_dir; \
     done
     for header in $(HEADER_FILES); do \
         install -m 644 include/$$header $(DESTDIR)$(includedir)/$$header; \
     done

/usr/localこれにより、次のようにするだけで、ファイルを にインストールできます。

make install

ただし、パラメータ化されている理由は、Makefile を変更せずに宛先フォルダーを変更できるようにするためです。たとえば、宛先を に変更するには、次の/usrようにします。

make prefix=/usr install

または、ファイルシステムをいじらずにインストール プロセスをテストしたい場合は、次のようにします。

make DESTDIR=/tmp/rocksdb_install_test prefix=/usr install

これにより、ファイルが配置され、/tmp/rocksdb_install_test/usr必要な場所にあるかどうかを確認できるファイルが配置されます...満足したらrm -Rf /tmp/rocksdb_install_test、クリーンアップを行うことができます。

私が使用した変数は、RPM または DEB でパッケージ化するために不可欠です。

于 2014-08-20T18:24:30.757 に答える
3

RocksDB には最近make installがあります。最新版を使えばmake installRocksDBでもできるはずです。

于 2014-09-15T22:39:47.643 に答える