簡體   English   中英

makefile:鏈接到庫(如果已安裝)。 如何? 以及如何禁用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM