`
haoningabc
  • 浏览: 1499609 次
  • 性别: 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能够有效处理非...

    gcc5.0安装要求相关包

    2. **系统库**:GCC在编译过程中需要链接到系统库,如GLIBC(GNU C Library),它是Linux系统的基础库,提供了许多C语言和C++的API。其他可能的库还包括数学库(libm)、线程库(libpthread)等。 3. **开发工具包*...

    gcc-13.3.0.tar.gz

    GCC源码的构建和安装通常需要一定的计算机编程基础和对编译环境的了解。安装过程中需要配置相应的依赖关系,并且可能需要手动下载和安装一些非自由的组件,例如libstdc++等。此外,GCC的构建过程也可能涉及到设置...

    gcc-9.4.0.tar.gz

    GCC源码的构建通常需要遵循一定的步骤,包括配置、编译和安装,这一过程中可能需要依赖一些基础的开发工具和库文件。 GCC编译器的性能对于软件开发流程至关重要。随着计算机硬件性能的提升和编程语言的演进,GCC也...

    gcc-12.4.0.tar.gz

    - **libgcc**:包含了GCC编译器的一些基础运行库。 - **gcc**:包含C编译器。 - **g++**:包含C++编译器。 - **objc**:包含Objective-C编译器。 - **include**:包含了编译器需要的头文件。 - **c-family**:包含了...

    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. **解压源代码**:将下载的`...

    gcc-14.2.0.tar.gz

    gcc-14.2.0版本是GCC编译器的一个更新版本,它在前一个版本14.1.0的基础上进行了一系列的改进和修复。开发者可以使用这个版本的GCC源码来构建适合特定操作系统和硬件平台的编译器。源码包的获取通常意味着用户有意向...

    gcc的rpm包全套

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

    gcc-10.3.0.tar.gz

    GCC,全称为GNU Compiler ...同时,随着开源项目的流行,GCC也逐渐成为学生和爱好者学习编译原理、编程语言特性和计算机科学基础知识的实践平台。GCC不仅是现代软件开发的基石,也是编程教育和研究的重要工具。

    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、gcc-c++安装包及依赖包4.4.7-23

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

    gcc-11.2.0.tar.gz

    版本11.2.0是GCC发展过程中一个更新的版本,它在之前的版本基础上增加了一些新的特性和改进。这个版本可能包含了对旧版本错误的修复、性能上的优化以及对新标准的支持。作为一个开源项目,GCC的源码可以被任何人下载...

    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语言的扩展,提供面向对象编程...

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

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

Global site tag (gtag.js) - Google Analytics