ubuntu15.04编译安装newlib 到x86_64
2016-12-06 16:15
381 查看
本次采用最新的newlib2.4.0 ,在http://sourceware.org/newlib/ 网页上找。
1.配置:
root@wuh-Inspiron-5535:/home/wuh/newlib-cygwin/newlib# ./configure --build=x86_64-pc-linux-gnu --target=arm-none-eabi --prefix=/home/wuh/newlib2.2.0/build --with-newlib --enable-newlib-io-long-long --enable-newlib-register-fini
--disable-newlib-supplied-syscalls --disable-nls
--targe=arm-none-eabi,newlib从targe选项解析出目标配置为arm架构,无操作系统,加入相应的newlib编译目录。
--prefix,为newlib的配置安装目录
其中比较重要的编译选项变量CFLAGS_FOR_TARGET,采用Os优化,s3c2416为armv5t指令集,并且没有硬件除法、浮点,必须采用软浮点,如果配置s5pv210的库,应配置成armv7-a指令,采用硬浮点。库采用arm模式编译,二进制接口采用aapcs-linux。可加入其它的配置参数,使生成的newlib库更微小,适应于cortex-m0等单片机应用方案中,相关的配置选项,请查阅相关的newlib资料。
2.编译 make all
因为各个版本交叉编译工具链编译选项等的差异,可能编译出错,根据出错信息进行更正即可。
3.安装 make install 路径为--prefix=/home/wuh/newlib2.2.0/build
4.修改Makefile 指定libm.so库
头部加两行,分别在arm-linux-gcc 加$(CLDFLAGS)
CLDFLAGS:= -lm
CXXLDFLAGS:= -lm
%.o : %.S
arm-linux-gcc ${CLDFLAGS} -o $@ $< -c
%.o : %.c
arm-linux-gcc ${CLDFLAGS} -o $@ $< -c
现在调用<math.h> sin()等函数的c文件就可以编译通过了。
另:
newlib安装后,会生成一个库头文件目录以及相应的静态库,其中库头文件声明对于标准c库均是一致的,可以直接使用交叉编译工具链默认的c库头文件。主要从newlib中提取出libc.a、libm.a、libnosys.a这三个库。在开发项目时,修改默认的c库路径,使之链接newlib即可。libnosys.a由源码目录下\libgloss\libnosys源代码实现,为newlib操作系统接口层,基本为空实现,避免使用一些c库函数时的链接失败。在实现一些io操作、文件操作、内存分配、时间产生等需要操作系统调用。如果应用程序中未访问这些与系统调用相关的c库函数,无需libnosys.a。
1.配置:
root@wuh-Inspiron-5535:/home/wuh/newlib-cygwin/newlib# ./configure --build=x86_64-pc-linux-gnu --target=arm-none-eabi --prefix=/home/wuh/newlib2.2.0/build --with-newlib --enable-newlib-io-long-long --enable-newlib-register-fini
--disable-newlib-supplied-syscalls --disable-nls
--targe=arm-none-eabi,newlib从targe选项解析出目标配置为arm架构,无操作系统,加入相应的newlib编译目录。
--prefix,为newlib的配置安装目录
其中比较重要的编译选项变量CFLAGS_FOR_TARGET,采用Os优化,s3c2416为armv5t指令集,并且没有硬件除法、浮点,必须采用软浮点,如果配置s5pv210的库,应配置成armv7-a指令,采用硬浮点。库采用arm模式编译,二进制接口采用aapcs-linux。可加入其它的配置参数,使生成的newlib库更微小,适应于cortex-m0等单片机应用方案中,相关的配置选项,请查阅相关的newlib资料。
2.编译 make all
因为各个版本交叉编译工具链编译选项等的差异,可能编译出错,根据出错信息进行更正即可。
3.安装 make install 路径为--prefix=/home/wuh/newlib2.2.0/build
4.修改Makefile 指定libm.so库
头部加两行,分别在arm-linux-gcc 加$(CLDFLAGS)
CLDFLAGS:= -lm
CXXLDFLAGS:= -lm
%.o : %.S
arm-linux-gcc ${CLDFLAGS} -o $@ $< -c
%.o : %.c
arm-linux-gcc ${CLDFLAGS} -o $@ $< -c
现在调用<math.h> sin()等函数的c文件就可以编译通过了。
另:
newlib安装后,会生成一个库头文件目录以及相应的静态库,其中库头文件声明对于标准c库均是一致的,可以直接使用交叉编译工具链默认的c库头文件。主要从newlib中提取出libc.a、libm.a、libnosys.a这三个库。在开发项目时,修改默认的c库路径,使之链接newlib即可。libnosys.a由源码目录下\libgloss\libnosys源代码实现,为newlib操作系统接口层,基本为空实现,避免使用一些c库函数时的链接失败。在实现一些io操作、文件操作、内存分配、时间产生等需要操作系统调用。如果应用程序中未访问这些与系统调用相关的c库函数,无需libnosys.a。
相关文章推荐
- Ubuntu 13.10 x86_64 Linux 3.12编译安装NVIDIA 331.17(附打官方补丁)
- 在虚拟机以及pc机上安装ubuntu 9.10_x86_64系统搭建android开发环境
- ubuntu12.4安装spring-tool-suite-3.0.0.RELEASE-e4.2-linux-gtk-x86_64-installer.sh
- centos 6.4 x86_64 (minimal) 编译安装percona
- ubuntu下无法编译ruby-2.1.5提示something wrong with CFLAGS -arch x86_64
- openCV(version:2.4.8)在Ubuntu(12.10)X86_64 上的安装
- x86_64的ubuntu, 安装32位共享库
- ubuntu安装Apache_OpenOffice_incubating_3.4.0_Linux_x86-64_install-rpm_zh-CN.tar.gz
- Ubuntu 12.04 64-bit下安装android 2.3.x编译环境指南
- ubuntu下无法编译ruby-2.1.5提示something wrong with CFLAGS -arch x86_64
- cp2k x86_64的串行/并行编译(ubuntu/SUSE, GNU编译器)
- Ubuntu 10.04 LS x86_64 安装 DB2 Express-C 10.12
- Ubuntu12.04.1LTS x86-64上安装mono,Jexus和apache
- Centos6.5_x86_64 编译安装Subversion-1.8.5
- CentOS 5.4 x86_64 编译安装 MySQL 完全笔记
- Ubuntu 8.04 x86_64安装xen 4.01
- VirtualBox 安装 ubuntu 出现This kernel requires an X86-64 CPU,but only detected an i686 CPU错误的解决办法
- 在ubuntu x86_64 GCC4.6上ics编译错误以及解决办法
- [Ubuntu] 解决 pip 安装 lxml 出现 x86_64-linux-gnu-gcc 异常
- Ubuntu-13.04-X86_64安装GT630驱动