`
microjava
  • 浏览: 321245 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

GCC编译器使用学习笔记(一)

阅读更多
GCC编译器使用学习笔记

gcc: GNU C Compiler/GNU Compiler Collection
gcc -v 
gcc --version:查看版本

vi hello.c
#include<stdio.h>
int main(void)
{
  printf("Hello,world!\n");
  return 0;
}


gcc -Wall hello.c -o hello
(-Wall:打开gcc的所有警告)
./hello

gcc -Wall hello.c
./a.out

测试-wall:
#include<stdio.h>
int main(void)
{
  printf("2 + 2 = %d\n",4); //%f:会显示警告
  return 0;
}


gcc -Wall hello.c hello


--多文件编译:
vi hello.h
void hello(const char* string);//不能没有;


vi hello.c
#include<stdio.h>
#include"hello.h"
void hello(const char* string)
{
  printf(string);
}


vi main.c
#include<stdio.h>  //系统头文件(/usr/include,/usr/local/include),不查找当前目录
#include"hello.h"  //先在当前目录下找
int main(void)
{
  hello("Hello,world!\n");
  return 0;
}


gcc -Wall hello.c main.c -o hello2
./hello2

--调错参数 -v
gcc -v -Wall hello.c

--只编译产生目标文件hello.o: -c
gcc -Wall -c hello.c
gcc -Wall -c main.c

--目标文件产生可执行文件
gcc hello.o main.o -o hello
./hello

--调用系统库

vi calc.c
#include<math.h>
#include<stdio.h>
int main(void)
{
  double x = sqrt(2.0);
  printf("the square root of 2.0 is %f.\n",x);
  return 0;
}


--调用第三方库

gcc -Wall main.c /usr/lib/libm.a -o calc

--创建自己的库 ar

ar cr libNAME.a file1.o file2.o ... filen.o

vi mylib.h
int func1(int x,int y);
void func2(int x);


vi func1.c
#include "mylib.h"
int func1(int x,int y)
{
   return x+y;
}


vi func2.c
#include <stdio.h>
#include "mylib.h"
void func2(int x)
{
  printf("The result is %d.\n",x);
}


vi main.c
#include <stdio.h>
#include "mylib.h"
int main(void)
{
  int i;
  i = func1(1,2);
  func2(i);
  return 0;
}


编译
gcc -Wall -c func1.c
gcc -Wall -c func2.c

生产库文件
ar cr libhello.a func1.o func2.o

gcc -Wall main.c libhello.a -o hello

gcc -Wall -c main.c
gcc -Wall func1.o func2.o main.o -o hello

gcc -Wall libhello.a main.c -o hello //编译不成功

cp libhello.a /usr/lib             //不推荐使用
gcc -Wall main.c -lhello -o hello  //只在系统库中查找

gcc -Wall main.c -L. -lhello -o hello //相对路径,推荐使用

--定义环境变量
export LIBRARY_PATH=/home/mcfeng:$LIBRARY_PATH
env | grep LIB
gcc -Wall main.c -lhello -o hello

--源程序结构
include
lib
main.c

gcc -Wall -Iinclude -c main.c
gcc -Wall main.o -Llib  -lhello -o hello




分享到:
评论

相关推荐

    gcc编译器的使用笔记

    #### 一、gcc编译器概述 GCC(GNU Compiler Collection)是一款开源的编译器套件,主要用于C、C++等语言的编译工作。在Linux环境下,gcc是非常重要的工具之一,尤其在开发、调试和部署应用程序时不可或缺。 #### 二...

    GCC 学习 笔记GCC学习笔记

    ### GCC 学习笔记知识点详解 #### 一、GCC简介与版本检查 - **GCC**(GNU Compiler Collection)是一款开源的编译器集合,广泛应用于Linux等类Unix系统上,支持多种编程语言如C、C++等。 - **版本检查**: - 要...

    gcc源码总结

    语法树是gcc编译器中的一种数据结构,用于表示源代码的语法结构。gcc编译器在编译源代码时,首先将源代码解析成语法树,然后对语法树进行操作,以生成机器代码。语法树的操作包括语法树的构建、遍历和修改等。 2. ...

    linux学习笔记.pdf

    Linux学习笔记 本文档主要记录了 Linux ...本文档记录了 Linux 操作系统的学习笔记,涵盖了 Basic 的编程、VI 编辑器的使用、GCC 编译器的应用、GDB 调试工具的使用等方面的知识点,为读者提供了一个系统的学习指南。

    gcc工具链的选项笔记

    gcc工具链的选项笔记 gcc工具链的选项笔记是对GCC编译器的选项进行的详细记录和说明。...gcc工具链的选项笔记为开发者提供了 GCC 编译器的详细使用说明,帮助开发者更好地使用GCC编译器,并提高编译效率和质量。

    winavr及gcc教程

    标题“winavr及gcc教程”指的是针对AVR微控制器的编程环境WinAVR和GCC编译器的学习资源。WinAVR是一个包含AVR-GCC的套件,提供了在Windows环境下开发AVR微控制器程序的工具链。GCC(GNU Compiler Collection)是一个...

    C高级学习笔记.doc

    C高级学习笔记 本笔记涵盖了C语言高级知识点,包括gcc编译器、编译常见错误与调试、指针、结构体、共用体、枚举类型、内存的动态分配、makefile工程管理器等。 一、gcc编译器 gcc编译器是C语言编译器的代表,它将...

    微机系统实验一学习笔记(个人监督)

    ### 微机系统实验一学习笔记(个人监督) #### 实验背景 本次实验旨在通过实践操作,使学生能够深入理解微机系统的环境搭建与基本应用。南京中医药大学人工智能与信息技术学院的学生聂乾枫在其微机系统实验报告中...

    AVR学习笔记

    AVR学习笔记是一系列关于微控制器编程的教程,主要针对AVR系列的MCU,如ATmega16。这些笔记涵盖了从基础到进阶的应用,旨在帮助初学者和有一定经验的开发者更好地理解和应用AVR微控制器。以下是这些笔记中涉及的一些...

    c++学习笔记精华版

    ### C++ 学习笔记精华版 #### 一、C++ 语言概述 **1、历史背景** - **C++ 的江湖地位** - Java、C、C++、Python、C# 是当前主流的编程语言之一,而 C++ 在这些语言中以其高效性和灵活性著称。 - **C++ 之父 ...

    嵌入式Qt移植前期准备-思维导图-学习笔记-基于正点原子阿尔法开发板

    Qt移植是为了在自制系统或资源受限的嵌入式系统上运行Qt应用...下载并解压Linaro GCC编译器到Ubuntu系统的指定目录,修改环境变量并重启系统即可完成交叉编译器的安装和验证。根文件系统的准备对于驱动开发也同样重要。

    c语言学习笔记(不完全)

    【C语言学习笔记概述】 C语言是一种强大的编程语言,由Dennis Ritchie和Ken Thompson在1972年为了编写UNIX操作系统而设计。它是B语言的进化版本,而B语言又源自BCPL。C语言以其高效、灵活性和对底层硬件的直接访问...

    林夕依然ICCAVRGCCAVR学习笔记(源码+proteus7.5仿真)

    《林夕依然ICCAVRGCCAVR学习笔记》是一份深入探讨AVR微控制器编程的资源包,包含源码和Proteus 7.5仿真实验。这份资料旨在帮助学习者掌握使用ICC AVR和GCC AVR编译器进行AVR微控制器开发的基本技能。以下是对这些...

    学习ios学习笔记

    在讨论iOS学习笔记之前,首先应当明确iOS开发的核心要素。iOS是苹果公司为其移动设备设计的操作系统,与之对应的开发语言主要是Objective-C以及近年来流行的Swift。Objective-C是一种成熟稳定的语言,它以C语言为...

    朱伟光的gcc.rar

    【标题】:“朱伟光的gcc.rar”是一个与GCC(GNU Compiler Collection)相关的资源压缩包,可能包含了朱伟光先生关于GCC编译器的讲解、教程或者代码示例。 【描述】:描述中的“朱伟光的gcc.rar”并未提供具体的...

    Linux学习笔记(强悍总结值得一看),细说linux基础知识,C,C++

    `gcc`和`g++`是常用的编译器,`make`工具用于自动化构建过程,`gdb`是强大的调试器。开发人员还需要熟悉`man`命令来查阅手册页,以及`grep`、`sed`和`awk`等文本处理工具。 总结,这份Linux学习笔记提供了丰富的...

    yzy第一次学习笔记作业

    总结来说,这个学习笔记作业涵盖了 Linux 中的基本技能,包括使用 Vim 编辑文件,通过 GCC 编译源代码,理解 Makefile 的工作原理,以及如何利用 GPT 解决遇到的问题。这些知识是深入学习 Linux 和进行系统级编程的...

    linux的学习笔记

    #### GCC 编译器的使用 1. **GCC 版本检查:** - 使用 `gcc -v` 命令可以显示当前系统的 GCC 版本信息。 2. **编译单个文件:** - 在命令行中使用 `gcc -c &lt;源文件名&gt;.c -o &lt;目标文件名&gt;.o` 可以将 C 源文件编译...

    新手C学习笔记(仅供菜鸟成长参考).rar

    笔记会讲解如何利用printf进行简单的错误检测,使用gcc编译器的调试选项-g,以及使用gdb进行程序调试。 八、实践项目 理论知识的学习需要通过实践来巩固。笔记可能会提供一些简单的编程练习,如实现计算器、链表...

    嵌入式开发学习笔记

    作者希望能够通过分享自己的学习笔记,帮助其他初学者少走弯路。 综上所述,本文档为嵌入式开发的初学者提供了一份详细的学习指南,不仅覆盖了嵌入式开发的基础知识,还包括了实际操作中可能遇到的问题和解决方案,...

Global site tag (gtag.js) - Google Analytics