`
haoningabc
  • 浏览: 1478177 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

gcc基础★

阅读更多
http://wenku.baidu.com/view/c77d0ad5b9f3f90f76c61b78.html
这篇文章跟我写 无关


读《linux高级程序设计》
[root@localhost ctest]# cat message.c 
#include <stdio.h>
void goodbye_world(void){
        printf("good by world\n");
}
[root@localhost ctest]# 

[root@localhost ctest]# cat main.c 
#include <stdlib.h>
void goodbye_world(void);
int main(int argc,char **argv){
        goodbye_world();
        exit(0);
}
[root@localhost ctest]# 

1.gcc -c message.c
  gcc -c main.c
  gcc -o goodbye main.o message.o
或者
2.gcc -o goodbye main.c message.c

共享库:共享函数库包含每个库例程的单一全局版本,它在所有应用程序之间共享,这一个过程背后所涉及的机制详单复杂,但主要依靠的是现代计算机的虚拟内存能力,他允许包含库例程的屋里内存安全地在多个独立用户程序之间共享

“位置无关”,他可以在任意内存位置被装在并仍然可以执行
★★★★★★★★★★★★★★★★★
gcc -fPIC -c message
"PIC" 命令行标记告诉GCC 产生的代码不要包含对函数和变量具体内存位置的引用,
gcc -shared -o libmessage.so message.o

gcc -o goodbye -lmessage -L. main.c

gcc -c main.c
gcc -o goodbye -lmessage -L. main.o
[root@localhost ctest]# ls
goodbye  libmessage.so  main.c  main.o  message.c  message.o
[root@localhost ctest]# ldd goodbye 
        linux-gate.so.1 =>  (0x00975000)
        libmessage.so => not found
        libc.so.6 => /lib/libc.so.6 (0x4cfdf000)
        /lib/ld-linux.so.2 (0x4cfba000)
[root@localhost ctest]# 


-c告诉gcc驱动程序调用它内部的c编译器并将其输出传递给外部的gnu汇编器,输出结果为.o的文件,它包含适合链接到一个较大程序的已编译目标代码

gcc选项:
1.一般选项  -c -s
2.语言选项
          -ansi
          -std
          -fno-builtin
3.警告级别
          -pedantic  pedantic-errors
          -Wformat
          -Wall
4.调试
          -g
5.优化
          -o1 -o2 -o3
6.硬件选项
          -marh
          -msoft-float
          -mbig-endian
          -mlittle-endian
          -mabi
man gcc
info gcc
加调试信息
gcc -g -o hello -Wall -pedantic-errors hello.c


objdump -x -d -S hello
分享到:
评论

相关推荐

    gcc交叉编译工具基础知识

    ### gcc交叉编译工具基础知识 #### 一、GCC与交叉编译概述 GCC(GNU Compiler Collection)是一款由GNU项目开发的开源编译器套件,它不仅支持多种编程语言(如C、C++等),还提供了强大的交叉编译功能。在嵌入式...

    GCC-Algorithm.rar_GCC matlab_GCC 广义互相关_GCC录音_gcc_广义互相关GCC

    ### GCC算法基础 1. **定义与原理**:GCC是基于经典互相关函数的一种扩展,它可以捕捉非线性、非高斯噪声下的相位关系。GCC通过计算两个信号的傅里叶变换的乘积再进行逆傅里叶变换来得到,这使得GCC能够有效处理非...

    GCC 11.2 离线安装包

    总的来说,GCC 11.2离线安装包的使用涉及编译器基础、软件工程实践、以及对操作系统和编程语言的理解。正确安装和使用GCC 11.2,可以帮助开发者充分利用其新特性和优化,提高代码质量和执行效率。

    linux中gcc4.8.5,下载解压即可直接使用,linux系统GCC编译

    1. 支持多种编程语言:除了基础的C和C++,还支持Objective-C、Fortran、Ada和Go等多种语言。 2. 高级优化:GCC 4.8.5包含一系列优化选项,如-O2和-O3,能对代码进行更深层次的优化,提升程序运行效率。 3. 支持C++11...

    gcc4.4.7 离线安装

    这是离线安装的基础,确保在有网络的环境中完成此步骤。 2. **创建编译工作目录**:在目标CentOS 6.5机器上,创建一个目录,比如`/usr/local/src`,并将其作为安装过程的工作目录。 3. **解压源代码**:将下载的`...

    cento7镜像 gcc4.8.5.rar

    标题中的“centos7镜像 gcc4.8.5.rar”指的是一个包含了CentOS 7操作系统的镜像文件,其中提取出了GCC(GNU Compiler Collection)的4.8.5版本。GCC是一个开源的编译器套件,它支持多种编程语言,如C、C++、Fortran...

    gcc的rpm包全套

    在Linux系统中,GCC扮演着至关重要的角色,是开发和构建软件的基础工具。 这个"gcc的rpm包全套"包含了GCC 4.4.7版本的所有相关组件,RPM(Red Hat Package Manager)是Linux发行版如Fedora、CentOS等常用的软件包...

    GCC编译器使用入门培训

    ### GCC编译器基础 GCC(GNU Compiler Collection)是一套由GNU项目开发的编译器集合,最初由Richard Stallman于1985年开始编写,旨在为自由软件运动提供一个强大的编译环境。GCC支持多种编程语言,包括C、C++、...

    GCC.rar_GCC 中文手册_gcc 手册_gcc中文手册_gnu c 中文

    **编译器基础** 编译器是将高级编程语言转换为机器可执行代码的软件。GCC作为一款强大的编译器,它的主要任务是将源代码(如.c或.cpp文件)转换成目标代码(.o文件),然后通过链接器将这些目标代码连接起来,形成...

    GCC.中文手册_it_gcc中文手册_gcc手册_

    GCC在软件开发领域扮演着至关重要的角色,因为它是许多开源操作系统如Linux和各种嵌入式系统的基础。 **GCC的编译过程** GCC的编译过程分为几个主要阶段:预处理、编译、汇编和链接。预处理阶段处理宏定义、条件...

    gcc-c++.zip

    在Linux环境中,GCC(GNU Compiler Collection)和C++是开发者常用到的重要工具。GCC是一个开源的编译器集合,主要用于C、C++、Fortran、Objective-C等多种编程语言的编译,而C++是C语言的扩展,提供面向对象编程...

    gcc、gcc-c++安装包及依赖包4.4.7-23

    在Linux系统中,GCC是开发人员的基础工具,用于构建各种应用程序和系统软件。 在描述中提到的"gcc、gcc-c++4.4.7-23"是GCC的一个特定版本,发布于2012年,适用于需要兼容旧版库或系统的环境。这个版本可能不包含...

    AIX7.1 gc.zip gcc环境所需的所有包 gcc6

    1. **预处理**:确保系统已经安装了必要的基础工具,如`bash`、`make`、`gdb`等。这些工具通常在AIX的系统管理工具包中。 2. **配置**:进入GCC源代码目录,运行配置脚本来适应AIX7.1的环境。例如: ```bash cd ...

    gcc教程gcc打包资料

    GCC在IT领域中扮演着至关重要的角色,是Linux和许多其他开源操作系统的基础组成部分。 GCC教程通常会涵盖以下几个关键部分: 1. **安装与配置**:首先,你需要了解如何在不同的操作系统上安装GCC,如在Ubuntu、...

    GCC内联汇编基础.pdf

    ### GCC内联汇编基础知识点概述 #### 一、内联汇编概念及优势 - **内联汇编**:一种允许程序员在高级语言(如C/C++)中直接嵌入汇编代码的技术,通常用于优化性能关键部分或实现特定硬件功能。 - **内联函数与内联...

    centos下安装gcc-7.5 rpm完整依赖

    2. **安装基础依赖**:GCC的构建需要一些基础包,如开发工具集、libmpc、libmpfr和libgmp。可以使用以下命令安装: ``` sudo yum groupinstall -y "Development Tools" sudo yum install -y mpfr-devel libmpc-...

    An Introduction to GCC

    该书不仅涵盖了GCC的基础知识,还深入探讨了其高级功能。 #### 二、GCC的主要特点 GCC作为一个强大的编译器工具集,具备以下几个显著的特点: 1. **跨平台支持**:GCC能够在多种操作系统上运行,包括但不限于...

    gcc-11.3.0及其依赖包

    这些库提供了高级数学运算和浮点计算的精确支持,是编译器的基础组件。 6. **调试信息**:GCC 11.3.0可能改进了调试信息的生成,使得开发者使用GDB等调试工具时能够获得更准确、更详尽的信息,帮助定位和解决问题。...

    centos7.9 gcc和gcc-c++所需依赖

    在CentOS 7.9操作系统中,安装GCC(GNU Compiler Collection)和GCC-C++是进行C和C++编程的基础。GCC是一套集成了C、C++、Fortran、Objective-C等语言编译器的工具集合,而GCC-C++则专注于C++的编译。在离线环境下...

    AVR-gcc.rar_avr-gcc软件

    总的来说,“AVR-GCC.rar_avr-gcc软件”提供的中文文档将引导读者从零开始,一步步学习AVR-GCC的安装、配置、使用、编程技巧和项目实践,为AVR微控制器的开发打下坚实的基础。对于想要深入理解和应用AVR-GCC的开发者...

Global site tag (gtag.js) - Google Analytics