求教bin下gcc版本问题

内核编译和嵌入式产品的设计与开发
回复
cws1214
帖子: 14
注册时间: 2009-09-23 19:29

求教bin下gcc版本问题

#1

帖子 cws1214 » 2009-10-11 12:03

请教下各位达人哈,我想编译安装skyeye1.2.7

问题1。 是不是只能用GCC-3.4的版本呢?

我在make的时候报了如下错误:
/usr/include/bits/fcntl2.h:51: 错误: 调用‘__open_missing_mode’,声明有错误属性:open with O_CREAT in second argument needs 3 arguments
make[2]: *** [nandflash_smallblock.o] 错误 1
make[2]:正在离开目录 `/home/cws/桌面/skyeye-1.2.7_rc1/device'
make[1]: *** [all-recursive] 错误 1
make[1]:正在离开目录 `/home/cws/桌面/skyeye-1.2.7_rc1'
make: *** [all] 错误 2

cws@cws-laptop:~/桌面/skyeye-1.2.7_rc1$ echo $path里面也有/usr/local/arm/3.4.1/bin阿

google了一下,看到一种解决方法:
修改bin下gcc的link,但发现只有gcc-4.3,没有gcc-3.4,改不过来了,我已经装过gcc3.4.1了

问题2。请问下这怎么回事阿?怎么弄呢
toddbmg
帖子: 62
注册时间: 2007-08-09 0:23
来自: 广东
联系:

Re: 求教bin下gcc版本问题

#2

帖子 toddbmg » 2009-10-11 12:20

比如
#ll /usr/bin/gcc*

lrwxrwxrwx 1 root root 7 2009-07-04 17:33 /usr/bin/gcc -> gcc-4.3
-rwxr-xr-x 1 root root 74100 2005-11-20 03:32 /usr/bin/gcc-2.95
-rwxr-xr-x 1 root root 208068 2009-03-17 08:30 /usr/bin/gcc-4.3
可以看到已经装了两个GCC版本,默认的情况是gcc-4.3,因为这个链接文件 gcc是链接到gcc-4.3。

有两个办法可以使用指定GCC版本:、
方法1。在要编译的代码目录的顶层Makefile中去指定GCC版本或路径
方法2。重新link一下,ln -sf /usr/bin/gcc-2.95 /usr/bin/gcc ;当你下次要用到GCC4。3时,再把它link回来
ln -sf /usr/bin/gcc-4.3 /usr/bin/gcc

OK!
cws1214
帖子: 14
注册时间: 2009-09-23 19:29

Re: 求教bin下gcc版本问题

#3

帖子 cws1214 » 2009-10-11 12:42

toddbmg 写了:比如
#ll /usr/bin/gcc*

lrwxrwxrwx 1 root root 7 2009-07-04 17:33 /usr/bin/gcc -> gcc-4.3
-rwxr-xr-x 1 root root 74100 2005-11-20 03:32 /usr/bin/gcc-2.95
-rwxr-xr-x 1 root root 208068 2009-03-17 08:30 /usr/bin/gcc-4.3
可以看到已经装了两个GCC版本,默认的情况是gcc-4.3,因为这个链接文件 gcc是链接到gcc-4.3。

有两个办法可以使用指定GCC版本:、
方法1。在要编译的代码目录的顶层Makefile中去指定GCC版本或路径
方法2。重新link一下,ln -sf /usr/bin/gcc-2.95 /usr/bin/gcc ;当你下次要用到GCC4。3时,再把它link回来
ln -sf /usr/bin/gcc-4.3 /usr/bin/gcc

OK!
先谢拉。

1。这个更改的方法我试过了阿 。还是不能解决问题
2。怎么来确定我当前用的是哪个版本的gcc呢?
3。我的/usr/bin下没有gcc-3.4,是不是会导致这个命令不起作用了?只有默认的那个gcc4.3,但是我装过gcc-3.4了阿。 :em06
cws1214
帖子: 14
注册时间: 2009-09-23 19:29

Re: 求教bin下gcc版本问题

#4

帖子 cws1214 » 2009-10-11 12:56

cws@cws-laptop:~/桌面/skyeye-1.2.7_rc1$ ls /usr/bin/gcc -l
lrwxrwxrwx 1 root root 18 2009-10-11 12:54 /usr/bin/gcc -> /usr/bin/gcc-3.4.1

1。显示红色,出了问题么?
2。没有问题的话,那是3.4的版本阿,难道不能用来编译安装skyeye么? :em06
上次由 cws1214 在 2009-10-11 13:08,总共编辑 1 次。
toddbmg
帖子: 62
注册时间: 2007-08-09 0:23
来自: 广东
联系:

Re: 求教bin下gcc版本问题

#5

帖子 toddbmg » 2009-10-11 13:00

方法1你不成功,并不代表这个方法不可行,可能你的操作不当(要找到被export 的那个变量定义处)
方法2。装了gcc3.4,那你应该知道它在哪里啊,如果是用apt-get安装的,那么默认是在/usr/bin中有,如果是手动安装的,那么你要看下--prefix指的是哪里,再找不着就find一下,比如

代码: 全选

find /usr -name "gcc*" -exec ls -l {} \; 

代码: 全选

find /opt -name "gcc*" -exec ls -l {} \; 
就知道在哪里鸟。。。。吃饭去
cws1214
帖子: 14
注册时间: 2009-09-23 19:29

Re: 求教bin下gcc版本问题

#6

帖子 cws1214 » 2009-10-11 13:11

toddbmg 写了:方法1你不成功,并不代表这个方法不可行,可能你的操作不当(要找到被export 的那个变量定义处)
方法2。装了gcc3.4,那你应该知道它在哪里啊,如果是用apt-get安装的,那么默认是在/usr/bin中有,如果是手动安装的,那么你要看下--prefix指的是哪里,再找不着就find一下,比如

代码: 全选

find /usr -name "gcc*" -exec ls -l {} \; 

代码: 全选

find /opt -name "gcc*" -exec ls -l {} \; 
就知道在哪里鸟。。。。吃饭去
我是手动安装的,知道他的目录/usr/local/arm/3.4.1/bin/gcc-3.4.1,那怎么把他link过去呢?
我用了下sudo ln -sf /usr/local/arm/3.4.1/bin/gcc-3.4.1 /usr/bin/gcc,还是显示的红色。是不是有问题阿?转到gcc-4.3显示的紫色。不能make。 :em06
谢谢了
toddbmg
帖子: 62
注册时间: 2007-08-09 0:23
来自: 广东
联系:

Re: 求教bin下gcc版本问题

#7

帖子 toddbmg » 2009-10-11 14:54

兄弟 你这是交叉编译啊,我还是以在本机I386上。。。。。。

如果你要编译在ARM上跑的东西,那么,你应该指明CROSS_COMPILE的CC,AR,AS,而不仅仅是指明GCC,
这是一个很明显的出错原因之一。编译,不单是依赖cc,还要ar,as,ld,nm,strip等等,你前面的情况估计只是指定用arm的cc-3.4,而没有指定用其它(ar,as,ld,nm,strip)。。。解决的办法,最好是在代码的顶层目录把编译相关的工具指定好!

我以为你只是在同一I386平台上把编译器换个版本而已。。。。看来你的硬功夫得修一下啊
cws1214
帖子: 14
注册时间: 2009-09-23 19:29

Re: 求教bin下gcc版本问题

#8

帖子 cws1214 » 2009-10-11 16:53

toddbmg 写了:兄弟 你这是交叉编译啊,我还是以在本机I386上。。。。。。

如果你要编译在ARM上跑的东西,那么,你应该指明CROSS_COMPILE的CC,AR,AS,而不仅仅是指明GCC,
这是一个很明显的出错原因之一。编译,不单是依赖cc,还要ar,as,ld,nm,strip等等,你前面的情况估计只是指定用arm的cc-3.4,而没有指定用其它(ar,as,ld,nm,strip)。。。解决的办法,最好是在代码的顶层目录把编译相关的工具指定好!

我以为你只是在同一I386平台上把编译器换个版本而已。。。。看来你的硬功夫得修一下啊
:em06 是啊是啊,的确缺好多基础。我是个新手。。我现在是想装那个skyeye呢。没有设计应用程序啊。你说的那些都是GNU里面的么,各个概念的功能大概了解一点,我还没有烧过程序。还不了解这些东西具体在什么时候怎么用 :em06
有没有详细点的设置方法呢。
非常谢谢。
回复