编译google/woff2时出现“libbrotli needed”错误如何解决
编译woff2关联本地brotli的解决方案
以下两种方案均可解决libbrotli needed报错问题,操作前先确认你已编译完成的brotli目录下存在libbrotlicommon.so、libbrotlidec.so、libbrotlienc.so三个动态库文件,以及对应的brotli头文件目录(通常为编译目录下的include文件夹),下文中所有<YOUR_BROTLI_BUILD_PATH>替换为你自己的brotli编译目录的绝对路径即可。
方案1:修改woff2的CMakeLists.txt直接引入本地brotli
- 打开woff2根目录下的
CMakeLists.txt,在文件最开头添加如下配置:
set(BROTLI_INCLUDE_DIR "<YOUR_BROTLI_BUILD_PATH>/include") set(BROTLI_LIBRARIES "<YOUR_BROTLI_BUILD_PATH>/libbrotlicommon.so" "<YOUR_BROTLI_BUILD_PATH>/libbrotlidec.so" "<YOUR_BROTLI_BUILD_PATH>/libbrotlienc.so" ) include_directories(${BROTLI_INCLUDE_DIR})
- 保存文件后,在woff2目录执行编译命令:
mkdir -p build && cd build cmake .. make -j$(nproc)
编译完成后生成的woff2相关二进制文件会存储在build目录下。
方案2:无需修改配置,编译时直接传入brotli路径
如果不想改动woff2的原生配置文件,可以在执行cmake命令时直接指定brotli的相关路径:
- 进入woff2根目录后执行如下命令:
mkdir -p build && cd build cmake .. \ -DBROTLI_INCLUDE_DIR=<YOUR_BROTLI_BUILD_PATH>/include \ -DBROTLI_LIBRARY_COMMON=<YOUR_BROTLI_BUILD_PATH>/libbrotlicommon.so \ -DBROTLI_LIBRARY_DEC=<YOUR_BROTLI_BUILD_PATH>/libbrotlidec.so \ -DBROTLI_LIBRARY_ENC=<YOUR_BROTLI_BUILD_PATH>/libbrotlienc.so make -j$(nproc)
运行时找不到brotli库的修复方法
如果编译完成后运行woff2工具提示找不到brotli动态库,执行以下命令临时生效:
export LD_LIBRARY_PATH=<YOUR_BROTLI_BUILD_PATH>:$LD_LIBRARY_PATH
需要永久生效的话,将上述命令添加到你的~/.bashrc(或~/.zshrc,对应你使用的shell)文件中,再执行source ~/.bashrc即可。
内容的提问来源于stack exchange,提问作者Porush Manjhi
相关产品推荐
相关产品推荐

