从(略微)过时的关于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的公认过程?
我的想法是将include目录的内容从rocksdb目录复制到类似于/usr/local/include的位置,并将librocksdb.so和librocksdb.a文件复制到/usr/local/lib中。这是否一个可以接受的方法?
注意:导出环境变量的方法不如我好,因为我在我的主文件夹中的一个目录中构建了rocksdb --我希望有一个更干净的解决方案(请解释一下您想要的)。
发布于 2014-09-15 22:39:47
RocksDB最近有制造安装。如果您使用的是最新版本,您应该能够在make install中使用RocksDB。
发布于 2014-08-20 18:24:30
当前Makefile中没有install目标。
这打破了编写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进行打包非常重要。
发布于 2017-12-21 16:06:10
I使用ubuntu 16.04
DEBUG_LEVEL=0 make shared_lib install-shared这样,安装就已经在生产模式中生成了。
如果您想节省时间,可以通过传递-jn (在我的例子中是-j4 )来指定进程中使用的处理器数量。
DEBUG_LEVEL=0 make -j4 shared_lib install-shared在ubuntu的情况下,这就足够了,但是对于ubuntu,您应该指定lib安装的位置。
export LD_LIBRARY_PATH=/usr/local/lib希望这能有所帮助。肯珀
https://stackoverflow.com/questions/25393010
复制相似问题