这取决于静态还是动态编译,本地还是交叉编译,平台不同,场景不同,需要的工具链不同,依赖也不同,参数选项也不尽相同,无法简单概括。以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 其实是多余,特定平台的工具链已内置优化)
感谢解答~
Most helpful comment
这取决于静态还是动态编译,本地还是交叉编译,平台不同,场景不同,需要的工具链不同,依赖也不同,参数选项也不尽相同,无法简单概括。以centos7交叉编译cortex-a9(arm v7)平台为例(工具链是toolchain-arm_cortex-a9_gcc-6.3.0_musl_1.1.16_eabi,定制编译自LEDE官方git,你可以根据自己的平台需要自行编译(gui勾选操作))