`
microjava
  • 浏览: 309332 次
  • 性别: 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编译器的使用笔记

    在学习linux过程中,对gcc编译器的使用选项的一些摘录,希望对大家的学习有帮助!

    gcc学习材料

    gcc学习笔记,非常好的东西哦,关于ssa数的,编译器相关的

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

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

    韩顺平教学Linux笔记

    Linux学习笔记。详述了Linux命令,gcc编译器

    《TCP/IP网络编程》学习笔记

    本资源是介绍《TCP/IP网络编程》学习笔记及具体代码实现,代码部分请参考章节文件夹下的代码,readme中有详细的说明。 环境是:Ubuntu18.04 LTS 编译器版本:g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 和 gcc ...

    ISL:用于使用 Graphite 循环优化构建 GCC 的 GNU ISL 库

    编译器:gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) 编译步骤 版本:0.11.1 (符合 GMP-4.3.2) wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.11.1.tar.bz2 tar xvf isl-0.11.1.tar.

    Linux 运维 入门到高级

    Linux启动流程 Linux根据端口号查看被占用的服务 升级gcc编译器 自动化运维 安装kickstart文件(半自动化) ANSIBLE部署 企业级OpenVPN 安装OpenVPN 该笔记由刘森飚整理,版权归原作者所有 仅用于学习交流分享,如有...

    全志H5(Nanopi_Neo_Plus2)学习笔记

    1.1 搭建交叉编译器 1.2 Menuconfig 中选择 y 和 m 的区别 1.3 分析 uboot 启动流程 1.4 更新 linu 下 gcc 版本 1.5 配置 WiFi 无线热点 1.6 制作根文件系统 1.7 Linux 下(SD 卡) 磁盘分区,格式化,挂载 2.1 ...

    netmon_cli:一个简单轻量级的终端数据包嗅探器

    netmon_cli 一个用 C 编写的简单、轻量级的终端数据包嗅探器。 免责声明 此工具仅为教育目的而构建,对于因非法使用...gcc 编译器 根权限 制作 笔记 我使用了特殊字符来显示颜色,它们在某些终端仿真器中可能不起作用

    百度地图毕业设计源码-TCP-IP-NetworkNote::blue_book:《TCP/IP网络编程》(韩-尹圣雨)学习笔记

    《TCP/IP网络编程》学习笔记 :carp_streamer: 此仓库是我的《TCP/IP网络编程》学习笔记及具体代码实现,代码部分请参考本仓库对应章节文件夹下的代码。如果本笔记的内容对你有用,请点击一个 star ,转载请注明出处...

    C/C++程序设计学习与实验系统 2010.part1

    C/C++程序设计学习与实验软件(支持TC2/TC3、GCC、VC6四种编译器,没有使用日期限制)。与软件配套的《 C/C++程序设计教程(配有同步实验、流程控制语句动画演示、提供教程中所有程序实例、实验、作业中的源代码(全部...

    C/C++程序设计学习与实验系统 2010.part2

    C/C++程序设计学习与实验软件(支持TC2/TC3、GCC、VC6四种编译器,没有使用日期限制)。与软件配套的《 C/C++程序设计教程(配有同步实验、流程控制语句动画演示、提供教程中所有程序实例、实验、作业中的源代码(全部...

    C/C++程序设计学习与实验系统 2010.part3

    C/C++程序设计学习与实验软件(支持TC2/TC3、GCC、VC6四种编译器,没有使用日期限制)。与软件配套的《 C/C++程序设计教程(配有同步实验、流程控制语句动画演示、提供教程中所有程序实例、实验、作业中的源代码(全部...

    C与C++程序设计学习与实验系统 .zip

    现在已全面支持最新操作系统VISTA,它是从事一线教学的大学教师根据C/C++ 初学者的特点,量身定制的一个简单易用的 C/C++程序设计学习与实验软件(支持TC2/TC3、GCC、VC6四种编译器,没有使用日期限制)。与软件配套的...

    word源码java-CTF:2018年2月15日至28日的CTF、C++STL等内容学习笔记

    VSCode是一个代码编译器,支持多种语言,编译运行单一文件不是很方便,可以通过插件Launcher开启CMD窗口,调用第三方程序执行一些命令,这里借用这个插件实现调用WSL编译运行单个文件 1.Windows调用WSL运行Linux程序...

    c++与c程序设计学习与实验系统(2014)

    它是从事一线教学的大学教师根据多媒体教学演示和C语言初学者的特点,量身打造的一个简单易用的C/C++程序设计教学演示、学习与实验软件(支持TC2/TC3、VC6、GCC四种编译器,单步调试功能免费,没有使用日期限制)。...

    C与C++程序设计学习与实验系统 2011.2

    现在已支持最新操作系统WINDOWS 7,它是从事一线教学的大学教师根据C程序多媒体教学演示和C语言初学者的特点,量身打造的一个简单易用的C/C++程序设计教学演示、学习与实验软件(支持TC2/TC3、GCC、VC6四种编译器,...

    安装WRF模式3.8.1

    #WRF模式安装网上有很多分享文章,我参考《兰溪之水WRF模式入门指南》和《WRFlinux学习笔记——从零开始》两篇文章,加入自己在安装过程中遇到问题解决问题的小小经验或者是心得体会,整理分享出来,希望帮助到有...

    C/C++程序设计学习与实验系统

    它是从事一线教学的大学教师根据C程序多媒体教学演示和C语言初学者的特点,量身打造的一个简单易用的C/C++程序设计教学演示、学习与实验软件(支持TC2/TC3、GCC、VC6四种编译器,没有使用日期限制)。与软件配套的《 ...

    ARM 嵌入式LINUX 系统构建与驱动开发

    最新版本是1.1.4 具体使用方*看我另一篇笔记吧。 6 UCLINUX包 UCLINUX的源码包,不用多说了吧?建议大家用现成的先体会一下,然后再自己编译,裁剪。因为单独UCLINUX的编辑技术上比较简单,但涉及的方面还是比较广...

Global site tag (gtag.js) - Google Analytics