如何在configure时,将编译参数传入,改变默认的编译器gcc成arm-linux-gcc

转载 2011年01月23日 17:35:00

http://www.51zxw.net/study.asp?vip=1368926 

http://blog.163.com/againinput4@yeah/blog/static/1227642712009623053497/

如何在configure时,将编译参数传入,改变默认的编译器gcc成arm-linux-gcc

【问题】

想要用交叉编译工具arm-linux-gcc去编译lrzsz,
但是在./configure的时候,无法用--host=arm-linux或--build=arm-linux或--target=arm-linux等传入此编译器参数。

【解决过程】

按照INSTALL中的介绍,也是常用的方法,在configure的时候,加上--host=arm-linux,结果没有实现我们要的效果,没有将编译器从默认的
gcc改成arm-linux-gcc,编译器还是用的默认的gcc:

[crifan@localhost lrzsz-0.12.20]$ CFLAGS=-O2 ./configure --host=arm-linux
loading cache ./config.cache
....................
checking for gcc... (cached) gcc
checking whether the C compiler (gcc -O2 ) works... yes
checking whether the C compiler (gcc -O2 ) is a cross-compiler... no
....................

后来经过多次尝试,最后受默认的
CFLAGS=-O2 ./configure
进行配置所启发,想到,是否可以将CC参数传入到configure中,
结果证实,如果没有自己的cache-file,即时加了对的CC参数,也还是无法传入:
[crifan@localhost lrzsz-0.12.20]$ CFLAGS=-O2 CC=arm-linux-gcc ./configure --host=arm-linux
loading cache ./config.cache
....................
checking for gcc... (cached) gcc
checking whether the C compiler (gcc -O2 ) works... yes
checking whether the C compiler (gcc -O2 ) is a cross-compiler... no
checking whether we are using GNU C... (cached) yes
....................

而且,如果CC参数放在configure后面:
./configure CC=arm-linux-gcc
则不能识别:
[crifan@localhost lrzsz-0.12.20]$ CFLAGS=-O2 ./configure CC=arm-linux-gcc
configure: warning: CC=arm-linux-gcc: invalid host type
....................

参数传递必须像
CFLAGS=-O2 ./configure
一样,将参数设置放在configure的前面:
CC=arm-linux-gcc./configure
才能识别的。


必须要自己制定自己的cache-file 然后用./configure进行新配置,加上CC参数,才会即时生效,编译器才可以变成我们要的arm-linux-gcc:
[crifan@localhost lrzsz-0.12.20]$ CC=arm-linux-gcc ./configure --cache-file=cache_file_0 --prefix=/usr/crifan/lrzsz
....................
checking for gcc... arm-linux-gcc
checking whether the C compiler (arm-linux-gcc ) works... yes
checking whether the C compiler (arm-linux-gcc ) is a cross-compiler... yes
checking whether we are using GNU C... yes
....................

否则,就无法将我们的CC参数传入了:
[crifan@localhost lrzsz-0.12.20]$ CC=arm-linux-gcc ./configure --prefix=/usr/crifan/lrzsz
....................
checking for gcc... (cached) gcc
checking whether the C compiler (gcc ) works... yes
checking whether the C compiler (gcc ) is a cross-compiler... no
checking whether we are using GNU C... (cached) yes
....................

[crifan@localhost lrzsz-0.12.20]$ CFLAGS=-O2 CC=arm-linux-gcc ./configure --cache-file=cache_file_0
loading cache cache_file_0
....................
checking for gcc... arm-linux-gcc
checking whether the C compiler (arm-linux-gcc -O2 ) works... yes
checking whether the C compiler (arm-linux-gcc -O2 ) is a cross-compiler... yes
checking whether we are using GNU C... yes


最好此处在加上--prefix=/usr/crifan/lrzsz,表示具体安装到哪里
[crifan@localhost lrzsz-0.12.20]$ CFLAGS=-O2 CC=arm-linux-gcc ./configure --cache-file=cache_file_0 --prefix=/usr/crifan/lrzsz
loading cache cache_file_0
....................
checking for gcc... arm-linux-gcc
checking whether the C compiler (arm-linux-gcc -O2 ) works... yes
checking whether the C compiler (arm-linux-gcc -O2 ) is a cross-compiler... yes
checking whether we are using GNU C... yes
....................

其中,/usr/crifan/lrzsz是已经建立好的,已经存在的文件夹,上面这样表示编译后,
将生成的可执行文件安装拷贝到那个目录.

【办法总结】
在./configure的时候,将CC参数放入configure之前,并且要制定cache file,才能完全即时识别编译器:
CC=arm-linux-gcc ./configure --cache-file=cache_file_0

相关文章推荐

如何使用指定版本的GCC/G++来编译autotools打包的程序

对于autotools来生成Makefile的程序包,不建议修改Makefile来指定GCC/G++的版本。 最佳方案: ./configure CC=你想使的C编译器的绝对路径 ./c...

【Linux开发】如何在./configure的时候将编译参数传入,改变默认的编译器gcc成arm-linux-gcc

如何在configure时,将编译参数传入,改变默认的编译器gcc成arm-linux-gcc 【问题】 想要用交叉编译工具arm-linux-gcc去编译lrzsz, 但是在./con...

2017CSDN博客排名第一名,今何处?

2017CSDN博客排名第一名,今何处?

剑指Offer——知识点储备-网络基础

剑指Offer——知识点储备-网络基础计算机网络http和https的区别 (1)http是http协议运行在tcp之上,所传输的内容都是明文,客户端和服务器端都无法验证对方的身份。 (2)https...

我和Java的一些往事

大家知道,在1991年,几乎与Linux同时,SUN发布了Java编程语言。不久,我的大学同学(比我低两年)王克宏教授(清华博士导师)与SUN合作成立了中国最早的“Java研究中心”

Redis安装与调试

最新版Redis安装与调试Redis安装与调试linux版本:64位CentOS 6.5Redis版本:2.8.17  (更新到2014年10月31日) Redis官网:http://redis.io...

CSDN排名第一的人。

大晚上不睡觉,八卦一下,下面是一个CSDN提问的文章, CSDN博客排名第一的是谁啊?—http://bbs.csdn.net/topics/340052616。说实话比较一直想知道CSDN排名第一...

CUDA编程(四)并行化我们的程序

CUDA编程(四)并行化我们的程序 上一篇博客主要讲解了怎么去评估CUDA程序的表现,博客的最后我们计算了在GPU上单线程计算立方和的程序的内存带宽,发现其内存带宽的表现是十分糟糕的。 这篇博...

Android之Kotlin实现补间动画-(TweenAnimaion)

补间动画(TweenAnimaion)四种常用实现1. AlphaAnimation(透明),实现findViewById(R.id.AlphaAnimation).setOnClickListene...

得到数组的最后一个数的趣味实现

直接上代码了。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)