编译后 Thrift bin 文件较大
Thrift bin file large size after compile
我在使用 alpine 3.8
的 docker 容器中编译 Thrift 时遇到问题
FROM alpine:3.8
RUN apk add --update --no-cache \
libstdc++ \
libgcc \
libevent \
composer \
tar \
git \
bash \
nginx
RUN apk add --update --no-cache php7-dev boost-dev autoconf openssl-dev automake make libtool bison flex g++ && \
cd /tmp && wget https://github.com/apache/thrift/archive/0.11.0.zip -O thrift.zip && unzip thrift.zip && cd thrift-0.11.0 && \
./bootstrap.sh && ./configure --with-openssl=/usr/include/openssl --without-ruby --disable-tests --without-php_extension --without-python --without-haskell --without-java --without-perl --without-php --without-py3 --without-erlang && make && make install && \
cd /tmp/thrift-0.11.0/lib/php/src/ext/thrift_protocol && phpize && ./configure && make && \
echo 'extension=thrift_protocol.so' >> /etc/php7/conf.d/thrift_protocol.ini && \
apk del --update --no-cache php7-dev boost-dev autoconf openssl-dev automake make libtool bison flex g++ && \
rm -rf /tmp/*
编译后的bin文件大小约为50MB
-rwxr-xr-x 1 root root 55566368 Sep 5 10:05 thrift
例如在 Mac OSX
上编译后的 bin 文件
4.2M Sep 4 17:37 thrift
默认情况下,configure && make
会导致 Thrift 使用调试符号构建,这是二进制膨胀的主要原因。
为了构建更紧凑和优化的 thrift
二进制文件,替换:
configure
与:
configure CFLAGS="-s -O2" CXXFLAGS="-s -O2"
-s
编译器选项会导致调试信息从生成的对象中删除。
-O2
编译器选项将启用常见的编译器优化,这应该会显着提高 thrift
性能。
更多信息:
我在使用 alpine 3.8
的 docker 容器中编译 Thrift 时遇到问题FROM alpine:3.8
RUN apk add --update --no-cache \
libstdc++ \
libgcc \
libevent \
composer \
tar \
git \
bash \
nginx
RUN apk add --update --no-cache php7-dev boost-dev autoconf openssl-dev automake make libtool bison flex g++ && \
cd /tmp && wget https://github.com/apache/thrift/archive/0.11.0.zip -O thrift.zip && unzip thrift.zip && cd thrift-0.11.0 && \
./bootstrap.sh && ./configure --with-openssl=/usr/include/openssl --without-ruby --disable-tests --without-php_extension --without-python --without-haskell --without-java --without-perl --without-php --without-py3 --without-erlang && make && make install && \
cd /tmp/thrift-0.11.0/lib/php/src/ext/thrift_protocol && phpize && ./configure && make && \
echo 'extension=thrift_protocol.so' >> /etc/php7/conf.d/thrift_protocol.ini && \
apk del --update --no-cache php7-dev boost-dev autoconf openssl-dev automake make libtool bison flex g++ && \
rm -rf /tmp/*
编译后的bin文件大小约为50MB
-rwxr-xr-x 1 root root 55566368 Sep 5 10:05 thrift
例如在 Mac OSX
上编译后的 bin 文件 4.2M Sep 4 17:37 thrift
默认情况下,configure && make
会导致 Thrift 使用调试符号构建,这是二进制膨胀的主要原因。
为了构建更紧凑和优化的 thrift
二进制文件,替换:
configure
与:
configure CFLAGS="-s -O2" CXXFLAGS="-s -O2"
-s
编译器选项会导致调试信息从生成的对象中删除。
-O2
编译器选项将启用常见的编译器优化,这应该会显着提高 thrift
性能。
更多信息: