[英]makefile: link to a library if it installed. How to? and how to disable?
我正在構建 rocksdb
似乎 rocksdb 的 makefile 將檢測我系統的壓縮庫(snappy,libz),如果安裝了 rocksdb 將鏈接到它。
我對 rocksdb 如何做到這一點很感興趣。 makefile 太復雜了,我找不到哪個部分可以完成這項工作。
我希望阻止這個動作,我希望 rocksdb 只鏈接 snappy,而不是在我的 linux 機器上下載的 zlib。
makefile: https://github.com/facebook/rocksdb/blob/main/Makefile
感謝@John Bollinger 的評論。
這個makefile作為配置腳本生成make_config.mk
文件, make_config.mk
中的PLATFORM_LDFLAGS
表示系統自帶的庫。
build_detect_platform負責生成make_config.mk
。 它是這樣工作的
if ! test $ROCKSDB_DISABLE_SNAPPY; then
# Test whether Snappy library is installed
# http://code.google.com/p/snappy/
$CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null <<EOF
#include <snappy.h>
int main() {}
EOF
if [ "$?" = 0 ]; then
COMMON_FLAGS="$COMMON_FLAGS -DSNAPPY"
PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lsnappy"
JAVA_LDFLAGS="$JAVA_LDFLAGS -lsnappy"
fi
fi
所以我可以設置ROCKSDB_DISABLE_ZLIB
來防止鏈接到 zlib
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.