Shadowsocks-libev: 希望能增加一个静态编译的选项

Created on 25 Aug 2017  ·  2Comments  ·  Source: shadowsocks/shadowsocks-libev

question

Most helpful comment

这取决于静态还是动态编译,本地还是交叉编译,平台不同,场景不同,需要的工具链不同,依赖也不同,参数选项也不尽相同,无法简单概括。以centos7交叉编译cortex-a9(arm v7)平台为例(工具链是toolchain-arm_cortex-a9_gcc-6.3.0_musl_1.1.16_eabi,定制编译自LEDE官方git,你可以根据自己的平台需要自行编译(gui勾选操作))

yum update -y
yum groupinstall "development tools" -y
yum install asciidoc xmlto ncurses-devel zlib-devel zlib-static glibc-static libstdc++-static.x86_64 -y
export PATH="$PATH:toolchain-arm_cortex-a9_gcc-6.3.0_musl_1.1.16_eabi/bin"
.......
省略部分参考官方示例
git submodule update --init --recursive
    ./autogen.sh
    ./configure                                     \
        --prefix="静态文件生成位置"                         \
        --host="工具链前缀(如用本地gcc编译可省,但要相应解决依赖文件)"          \
        --with-mbedtls="静态编译好的mbedtls文件主目录"     \
        --with-pcre="静态编译好的pcre主目录"         \
        --with-sodium="静态编译好的libsodium主目录"  \
        --disable-ssp                               \
        --disable-documentation                     \
        --disable-shared                            \
        --enable-static                             \
        LIBS="-lpthread -lm"                        \
        LDFLAGS="-static -static-libgcc -L静态编译好的libudns主目录/lib -L静态编译好的libev主目录/lib"    \
        CFLAGS="-Os -pipe -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -msoft-float -mfloat-abi=soft -fno-caller-saves -I静态编译好的libudns主目录/include -I静态编译好的libev主目录/include " 
make -j$(getconf _NPROCESSORS_ONLN) && make install

(-Os -pipe -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -msoft-float -mfloat-abi=soft -fno-caller-saves 其实是多余,特定平台的工具链已内置优化)

All 2 comments

这取决于静态还是动态编译,本地还是交叉编译,平台不同,场景不同,需要的工具链不同,依赖也不同,参数选项也不尽相同,无法简单概括。以centos7交叉编译cortex-a9(arm v7)平台为例(工具链是toolchain-arm_cortex-a9_gcc-6.3.0_musl_1.1.16_eabi,定制编译自LEDE官方git,你可以根据自己的平台需要自行编译(gui勾选操作))

yum update -y
yum groupinstall "development tools" -y
yum install asciidoc xmlto ncurses-devel zlib-devel zlib-static glibc-static libstdc++-static.x86_64 -y
export PATH="$PATH:toolchain-arm_cortex-a9_gcc-6.3.0_musl_1.1.16_eabi/bin"
.......
省略部分参考官方示例
git submodule update --init --recursive
    ./autogen.sh
    ./configure                                     \
        --prefix="静态文件生成位置"                         \
        --host="工具链前缀(如用本地gcc编译可省,但要相应解决依赖文件)"          \
        --with-mbedtls="静态编译好的mbedtls文件主目录"     \
        --with-pcre="静态编译好的pcre主目录"         \
        --with-sodium="静态编译好的libsodium主目录"  \
        --disable-ssp                               \
        --disable-documentation                     \
        --disable-shared                            \
        --enable-static                             \
        LIBS="-lpthread -lm"                        \
        LDFLAGS="-static -static-libgcc -L静态编译好的libudns主目录/lib -L静态编译好的libev主目录/lib"    \
        CFLAGS="-Os -pipe -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -msoft-float -mfloat-abi=soft -fno-caller-saves -I静态编译好的libudns主目录/include -I静态编译好的libev主目录/include " 
make -j$(getconf _NPROCESSORS_ONLN) && make install

(-Os -pipe -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -msoft-float -mfloat-abi=soft -fno-caller-saves 其实是多余,特定平台的工具链已内置优化)

感谢解答~

Was this page helpful?
0 / 5 - 0 ratings