最小编译配置选项:
GCC_VARIANT:=minimal
include ../common.mk
GCC_CONFIGURE += \
--with-newlib \
--without-headers \
--enable-languages=c \
--disable-libssp \
--disable-shared \
--disable-threads
初始编译配置选项:
GCC_VARIANT:=initial
include ../common.mk
GCC_CONFIGURE += \
--with-newlib \
--with-sysroot=$(TOOLCHAIN_DIR) \
--enable-languages=c \
--disable-shared \
--disable-threads \
最终编译配置选项:
GCC_VARIANT:=final
include ../common.mk
GCC_CONFIGURE += \
--with-headers=$(TOOLCHAIN_DIR)/include \
--enable-languages=$(TARGET_LANGUAGES) \
--enable-shared \
--enable-threads \
--with-slibdir=$(TOOLCHAIN_DIR)/lib
疑点在于--with-sysroot=$(TOOLCHAIN_DIR)选项。
最小编译用于检出linux头文件,无需搜索头文件和库,所以无需关心sysroot;
初始编译用于编译c库,需要搜索安装的linux头文件(安装在$(TOOLCHAIN_DIR)/include目录下),所以设置sysroot;
最终编译用于编译各种软件包,其配置选项将影响编译其他软件包时的搜索路径,而此处未设置,本人认为有问题。
当在linux平台上编译openwrt时,因为同为linux系统,库和系统函数定义一样(当然可能存在版本差别),在编译时搜索host的头文件和库可能不会出问题(实际是问题被掩盖了),但是当在freebsd平台编译时,因为个别函数定义头文件不同(如有些参数linux定义在alloca.h中,而freebsd定义在stdlib.h中),就会出现找不到头文件(如alloca.h)的错误。
以上分析尚未实际验证。稍后进行。
恳请大家指教。
请不要胡乱输入以及粘贴、复制等方式灌水
请尊重作者、并共同维护网站的正常阅读,否则账户将会被限制发帖、回帖,并且积分可能会被清零,站内短信以及阅读权限等都会受到影响,谢谢。
具体限制方式:https://www.right.com.cn/forum/thread-8307840-1-1.html
|