linux makefile:链接到一个库,如果它安装了,如何?以及如何禁用?

sbdsn5lh  于 2022-12-03  发布在  Linux
关注(0)|答案(1)|浏览(123)

我正在构建rocksdb
似乎rocksdb的makefile将检测我的系统的压缩库(snappy,libz),如果安装了rocksdb将链接到它。
我对rocksdb是如何做到这一点很感兴趣。makefile是如此复杂,我找不到哪个部分做这项工作。
我希望阻止这个动作,我希望rocksdb只链接snappy,而不是下载到我的linux机器上的zlib。
生成文件:https://github.com/facebook/rocksdb/blob/main/Makefile

ovfsdjhp

ovfsdjhp1#

感谢@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

相关问题