[原创]FreeBSD10下强制使用GCC编译程序_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4722 | 回复: 0   主题: [原创]FreeBSD10下强制使用GCC编译程序        下一篇 
wulcan
版主
等级:中校
经验:1795
发帖:124
精华:0
注册:2014-3-19
状态:离线
发送短消息息给wulcan 加好友    发送短消息息给wulcan 发消息
发表于: IP:您无权察看 2014-6-29 9:06:28 | [全部帖] [楼主帖] 楼主

自FreeBSD10以后,默认的编译器不再使用GCC,而由于各种原因,很多程序必须用gcc编译,用Clang则会出各种问题。在FreeBSD使用这类程序时,必须强制使用gcc进行编译。

首先,需要安装gcc,在FreeBSD中,gcc有多个版本,可以用find找一下:

% find /usr/ports/lang -type d -name "gcc*"
/usr/ports/lang/gcc-aux
/usr/ports/lang/gcc-ecj45
/usr/ports/lang/gcc
/usr/ports/lang/gcc34
/usr/ports/lang/gcc44
/usr/ports/lang/gcc46
/usr/ports/lang/gcc47
/usr/ports/lang/gcc48
/usr/ports/lang/gcc49


可以根据实际需要安装对应的版本,默认版本现在是gcc47,没有特殊情况,一般用gcc47或gcc48(截止2014年6月),以下以gcc48为例。

安装GCC,没有必要进行编译,直接用pkg安装就可以了:

pkg install gcc48


要注意,gcc48安装后,直接输入gcc会提示找不到命令,因为gcc48安装后,并没有生成默认的gcc,而是gcc48:

% whereis gcc
gcc: /usr/src/contrib/gcc
% whereis gcc48
gcc48: /usr/local/bin/gcc48 /usr/local/man/man1/gcc48.1.gz /usr/ports/lang/gcc48


可以发现,gcc48的程序名叫:gcc48,这种命名法有个好处,就是可以让多个gcc的版本共存,再添加gcc47,gcc44的时候,不至于为了争用gcc这个名字而相互冲突。

另外,由于/usr/local/bin正常情况在大多数用户的PATH环境变量中,所以在手动指定编译器的时候,可以不用路径。

其次,编译程序时指定用gcc48进行编译,这有三种情况:

(1)ports中。

    Ports有个指定编译器的选项,是“USE_GCC”,可以在Makefile中直接添加这个变量:

USE_GCC=yes


这个配置指用默认的gcc版本

USE_GCC=any


这个配置指所有版本

USE_GCC=4.7+


这个配置指4.7以上版本

(2)不在Ports中,但是提供了Makefile,可以直接在Makefile中修改,主要是:

CC = gcc48
CCDEPMODE = depmode=gcc3
CPP = gcc48 –E


(3)仅提供了configure,这种情况下,要用环境变量,这样在产生的Makefile中,会有gcc48的字样:

setenv CC gcc48
./configure


该贴由hui.chen转至本版2014-11-5 17:04:58



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论