openwrt barrier_breaker gcc final编译配置选项好像有问题
2014-11-01 19:29
429 查看
最小编译配置选项:
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)选项。
以上分析尚未实际验证。稍后进行。
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)选项。
以上分析尚未实际验证。稍后进行。
相关文章推荐
- OpenWrt BarrierBreaker 14.07-rc3: 3G自动拨号配置
- Openwrt Barrier Breaker 中添加 Layer 7 过滤的方法
- [GCC for C]编译选项---IDE掩盖下的天空
- [GCC for C]编译选项---IDE掩盖下的天空
- PHP - Manual手册 - 附录 H. php.ini 配置选项 - short_open_tag决定是否允许使用PHP代码开始标志的缩写形式
- Linux 2.6.19.x 内核编译配置选项简介
- Linux 2.6.19.x 内核编译配置选项简介
- OpenSceneGraph配置和编译说明
- 内核编译配置选项简介 (2.4.18-rmk7-pxal)
- Linux 2.6.19.x 内核编译配置选项简介
- gcc常用的编译选项对代码的影响
- Linux 2.6.19.x 内核编译配置选项简介
- [GCC for C++]编译选项---IDE掩盖下的天空
- Linux 2.6.20.x内核编译配置选项简介
- Linux 2.6.19.x 内核编译配置选项简介
- 转: gcc常用的编译选项对代码的影响
- gcc常用的编译选项对代码的影响
- OpenSceneGraph配置和编译说明
- Linux 2.6.19.x 内核编译配置选项简介
- gcc的编译选项(好多都可以提高效率的)