linux命令cc与gcc比较

本文探讨了GCC与传统CC编译器之间的区别。GCC不仅是一个C编译器,还是一个包含多种语言支持的强大编译器集合。文章还解释了为何在现代Linux和Unix系统中,GCC逐渐取代CC成为主流。

文章来自:http://www.360doc.com/content/10/0819/09/935385_47111428.shtml

从名字上看,老的unix系统的cc程序叫做c compiler。但gcc这个名字按gnu的说法叫做gnu compiler collection。因为gcc包含很多编译器(c,c++,objective-c,ada,fortran,java)。所以它们是不一样的,一个是一个古老的c编译器,一个是编译器的gnu的编译器的集合(gcc里面的c编译器比cc强大的多了,所以你没必要用cc)。当你调用gcc时不一定调用的是c/c++编译器,是gcc根据文件扩展名自动识别并调用对应的编译器,具体可查阅man手册(man gcc)。

    你是下载不到cc的,原因是:cc来自于昂贵的unix系统,cc是商业软件,要想用你需要打电话,写订单,而不是打开你的browser去download。

    linux下的cc是gcc的符号链接。可以通过ls -l /usr/bin/cc来查看。而编译时看到的控制台输出CC则是一个指向gcc的变量,该变量是make程序的内建变量,就算你在Makefile中没有CC=,该变量也会存在,并默认指向gcc。cc的符号链接和变量存在的意义在于源码的移植性,可以方便的用gcc来编译老的用cc编译的unix软件,甚至连Makefile都不要改。而且也便于linux程序在unix下的编译。

近几年的一个新情况是越来越多的unix用户,据我所知像solaris,bsd用户也不太使用cc了,人们都一定要装一个gcc,用它来编译c/c++程序。原因显而易见,gcc足够强大、健壮。支持估计目前为止只有它支持的iso c/c++新特性,当然你最好不要使用night版本的gcc。

 

<think>好的,我现在需要解决用户的问题:在Linux环境下使用CMake时如何指定GCC编译器的路径。用户之前可能已经了解过CMake的基本使用,但需要更具体的配置方法。首先,我应该回顾一下用户提供的引用内容,看看有哪些相关信息可以借鉴。 根据引用[2],用户尝试过在CMakeLists.txt中直接设置CMAKE_C_COMPILERCMAKE_CXX_COMPILER,但发现这种方法可能不可靠。正确的做法是在调用CMake之前通过环境变量CCCXX来指定编译器路径。例如,使用export命令设置环境变量,然后再运行CMake生成构建文件。这种方法更推荐,因为它避免了在CMakeLists.txt中硬编码编译器路径,提高了灵活性。 另外,引用[4]提到在交叉编译时,可以通过创建工具链文件(toolchain file)来指定交叉编译器的路径其他设置。虽然用户的问题不是关于交叉编译,但工具链文件的方法同样适用于指定本地GCC编译器。工具链文件的方式使得配置更加模块化,特别是当需要多个不同的编译配置时,可以方便地切换不同的工具链文件。 用户的需求是明确指定GCC的路径,可能有多个GCC版本安装在系统中,或者使用自定义安装的GCC。需要确保CMake能够正确找到并使用指定的编译器。此外,用户可能希望了解不同方法的优缺点,以便选择最适合他们项目的方式。 接下来,我需要整理出几种可行的方法,并详细说明步骤。首先,环境变量方法是最直接的,适用于临时指定编译器。其次,命令行参数方法可以在不修改脚本或文件的情况下传递编译器路径。最后,工具链文件方法适合需要重复使用或更复杂配置的情况。 需要注意,直接设置CMAKE_C_COMPILER变量在CMakeLists.txt中可能会在第一次配置后缓存该值,导致后续构建无法更改,因此不推荐。而使用环境变量或工具链文件可以避免这个问题。此外,确保指定的编译器路径有效,并且用户有执行权限,否则CMake会报错。 可能还需要提醒用户验证编译器版本,确保指定的GCC确实被使用。例如,构建完成后检查CMake输出的编译器信息,或者通过make VERBOSE=1查看详细的编译命令。 最后,生成相关问题,帮助用户进一步了解相关主题,比如如何指定C++编译器、处理多版本编译器或交叉编译配置。这些问题应该用户当前的问题相关,扩展他们的知识面,同时参考之前的引用内容,确保信息准确。</think>在Linux环境下使用CMake指定GCC编译器路径的常用方法如下: --- ### 方法1:通过环境变量指定 在调用`cmake`命令前,通过`export`设置环境变量: ```bash export CC=/path/to/your/gcc # 指定C编译器路径 export CXX=/path/to/your/g++ # 指定C++编译器路径 cmake /path/to/project make ``` 此方法优先级最高,且无需修改CMakeLists.txt文件[^2]。 --- ### 方法2:命令行参数指定 直接在`cmake`命令中传递编译器路径: ```bash cmake -DCMAKE_C_COMPILER=/path/to/gcc -DCMAKE_CXX_COMPILER=/path/to/g++ /path/to/project ``` 此方法适合临时指定编译器,但需注意CMake缓存可能导致后续配置需清理(如删除`build`目录)[^2]。 --- ### 方法3:工具链文件指定 创建工具链文件(如`my_toolchain.cmake`): ```cmake # my_toolchain.cmake set(CMAKE_C_COMPILER /path/to/gcc) set(CMAKE_CXX_COMPILER /path/to/g++) ``` 调用时通过`-DCMAKE_TOOLCHAIN_FILE`指定该文件: ```bash cmake -DCMAKE_TOOLCHAIN_FILE=my_toolchain.cmake /path/to/project ``` 此方法适合需要复用或复杂配置的场景(如交叉编译)[^4]。 --- ### 验证是否生效 1. 查看CMake输出日志中的`C compiler``C++ compiler`路径; 2. 编译时添加`VERBOSE=1`查看详细命令: ```bash make VERBOSE=1 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值