openwrt barrier_breaker gcc final编译配置选项好像有问题

最小编译配置选项:
    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)的错误。

更正:gcc最终编译完成之后调用$(SCRIPT_DIR)/patch-specs.sh "$(TOOLCHAIN_DIR)"对搜索路径等进行了修正,所以不需要加--with-sysroot=$(TOOLCHAIN_DIR)选项。

以上分析尚未实际验证。稍后进行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值