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

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

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

Shared vs Static Libraries

--标准C

vi ansi.c
#include<stdio.h>
int main(void)
{
  const char asm[] = "6502";
  printf("the string asm is '%s'.\n",asm);
  return 0;
}

gcc -Wall -ansi ansi.c -o ansi  //-ansi:标准c编译

vi pi.c
#include<math.h>
#include<stdio.h>
int main(void)
{
  printf("pi is %f.\n",M_PI);
  return 0;
}


gcc -Wall -ansi -D_GNU_SOURCE pi.c -o pi
gcc -Wall pi.c -o pi

vi v.c
#include<stdio.h>
int main(int argc,char* argv[])
{
  int i,n=argc;
  double x[n];			//可变数组在标准c中不允许

  for(i=0;i<n;i++)
    x[i]=i;

  return 0;
}


gcc -Wall -ansi -pedantic v.c  //检测程序严格按照标准c

--gcc参数 -Wall

-Wcomment:检测注释是否嵌套
-Wformat: 检测格式是否正确
-Wunused:检测没有用过的变量
-Wimplicit:检测是否声明
-Wreturn-type:检测返回值是否正确

-W
-Wconversion
-Wshadow
-Wcast-qual
-Wwrite-strings
-Wtraditional


注释方式:
/* */:不允许嵌套

#if 0

#end if:可以有嵌套


--预处理
宏定义
#define MAX 1024 + 128

i=MAX*2 等效 i=1024 +128*2

vi def.c
#include<stdio.h>
int main(void)
{
  #ifdef TEST
          printf("Test mode.\n");
  #endif
          printf("Running...\n");
	return 0;
}


gcc -Wall -DTEST def.c -o dt
gcc -Wall def.c -o ndt

查看宏定义
cpp -dM /dev/null

vi dm.c
#include<stdio.h>
int main(void)
{
  printf("NUM is %d.\n",NUM);
  return 0;
}


gcc -Wall -DNUM=123 dm.c -dm
gcc -Wall -DNUM="1+2" dm.c -dm


--只预处理,不编译
vi bj.c
#define TEST "Hello,Beijing!"
const char str[] = TEST;


gcc -E bj.c

gcc -Wall -c -save-temps hello.c  //保存中间文件

分享到:
评论

相关推荐

    GCC 学习 笔记GCC学习笔记

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

    linux学习笔记.pdf

    本文档主要记录了 Linux 操作系统的学习笔记,涵盖了 Basic 的编程、VI 编辑器的使用、GCC 编译器的应用、GDB 调试工具的使用等方面的知识点。 一、编程基础 * 了解 C 语言的基本语法,例如变量声明、数据类型、...

    gcc源码总结

    gcc源码总结 gcc源代码的总结主要包括语法树的操作和对程序的解析。以下是gcc源码总结的相关...GCC编译器的缺点包括复杂的使用方式、缓慢的编译速度、有限的语言支持等。GCC编译器的缺点限制了其在某些领域的应用。

    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语言编译器的代表,它将...

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

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

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

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

    AVR学习笔记

    AVR学习笔记是一系列关于微...同时,了解avr-gcc编译器、AVR Studio或其他IDE的使用,以及如何烧录固件到微控制器也是必要的。随着深入学习,你将能够设计和实现自己的AVR项目,从简单的LED闪烁到复杂的嵌入式系统。

    c++学习笔记精华版

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

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

    这份学习笔记很可能包含了关于AVR微控制器的基础知识,如寄存器配置、中断处理、定时器/计数器的使用、串行通信、I/O端口操作等内容。同时,也会涉及如何使用ICC AVR和GCC AVR进行编程,包括编译环境的搭建、代码...

    linux的学习笔记

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

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

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

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

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

    朱伟光的gcc.rar

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

    【韦东山Linux学习】学习笔记(汇总版)

    系统gcc编译器默认头文件路径:一般在/usr/include目录下,进入该目录,然后使用find -name stdio.h表示在当前目录下查找stdio.h头文件! == find /usr/include/ -name stdio.h 交叉编译gcc编译器默认头文件路径:...

    linux C 动态库和静态库生成及使用笔记

    生成动态库需要两步:首先,使用 gcc 编译器将源文件(例如 hello.c)编译成二进制指令文件(例如 hello.o);其次,将 hello.o 文件打包生成库文件(例如 libhello.so)。需要注意的是,Linux 中动态库的命名规则是...

    嵌入式开发学习笔记

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

    gcc.rar_gcc

    **GCC配置笔记** GCC(GNU Compiler Collection)是GNU项目的核心组件,它是一个开源的、跨平台的编译器集合,支持C、C++、Objective-C、Fortran、Ada、Go等多种编程语言。这个“gcc.rar_gcc”压缩包很可能是包含了...

Global site tag (gtag.js) - Google Analytics