问题原因:

我们都知道我们写一个程序不可能所有东西都重头去开发,因此我们会使用一些其它人写好的文件或者说叫做库函数等。但是有时候因为路径的设置不对,或者是文件的丢失,或者是文件版本不对,或者是文件的编码不对,都可能导致我们无法编译成功。

c语言编译过程:

预处理生成.i文件。

生成汇编语言.s文件

生成机器码.o文件

链接机器代码生成可执行文件

gcc编译参数说明:

了解了c语言的编译过程,我们就来介绍gcc的各个参数,来分别对照各个步骤。

gcc -E main.c -o main.i(进行预处理 .i文件)

gcc -S main.i -o main.s (生成汇编代码.s文件)

gcc -c main.s -o main.o (生成机器码.o文件)

gcc main.o -o main.exe (生成可执行文件windows)

各个过程图片如下:

当然了,平时我们写程序的时候不需要这么复杂的过程,我们可以直接一步编译生成可执行文件。

gcc main.c -o main.exe

如果需要调试,我们需要使用-g 选项

编译时需要的一些其它参数

有些时候我们还需要链接一些其它的库文件,这个时候我们可以使用-l选项,比如我们使用SGL图形库的时候,我们可能就需要-lSGL2选项来加载所需要的函数链接库。

解决问题办法

如我们之前所说的一样,我们需要使用-l来加载一些缺少的函数库文件。

头文件找不到的话,我们就指定头文件搜索路径 -I 库文件找不到的话,我们就指定库文件搜索路径 -L 当然我们也可以使用-l(小写L)来指定具体的库文件

在linux上的系统会有LD_LIBRARY_PATH这个环境变量,它里面定义了库文件的路径,如果我们有新的库,可以把它加入到这个环境变量里面。

更多前端知识请浏览前端园地其它文章^_^!

c语言缺少函数头怎么办,c语言编译时如何解决缺少头文件和库的问题相关推荐

  1. c语言prime函数怎么用_C语言教程_v20201106

    编程基础 1.1    通俗地理解什么是编程语言 1.2    C语言究竟是一门怎样的语言? 1.6    初中毕业能学会编程吗? 1.7    C和C++到底有什么关系? 1.8    学了 C 语 ...

  2. r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数

    在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...

  3. c语言中函数名可变,C语言中可变参数函数

    转帖两封: 首先在介绍可变参数表函数的设计之前,我们先来介绍一下最经典的可变参数表printf函数的实现原理. 一.printf函数的实现原理 在C/C++中,对函数参数的扫描是从后向前的.C/C++ ...

  4. c语言程序函数的结构,C语言课件:第11讲函数与程序结构

    <C语言课件:第11讲函数与程序结构>由会员分享,可在线阅读,更多相关<C语言课件:第11讲函数与程序结构(21页珍藏版)>请在人人文库网上搜索. 1.第11讲 函数与程序结构 ...

  5. c语言scanf函数计算乘积,C语言Scanf函数

    C语言的scanf函数 一.变量的内存分析 (一)字节与地址 ①. 内存以字节为单位 每个字节都有自己的内存地址,根据地址就可以找到该字节.整个内存相当于一整个酒店,而酒店以房间为单位,在这里每个房间 ...

  6. c语言休眠函数 vs,编纂C语言跨平台函数(以清屏和休眠函数为例)

    编写C语言跨平台函数(以清屏和休眠函数为例) 支持C语言的平台有许多,常见的编译器如VC.gcc.Clang等.不同的编译器共同点是都支持标准C(ANSI C),但是各自却又有自己独立的.平台相关的功 ...

  7. c语言虚函数是什么,C语言中什么函数不能声明为虚函数?

    2016-07-14 00:51齐智富 客户经理 --------------------------------------------------------------------------- ...

  8. r语言 c 函数返回值,R语言入门 输出函数 cat、print、paste等区别理解

    一. 简介 cat.print函数都是输出函数 > cat("hello world") hello world >> print("hello wor ...

  9. c语言srand函数怎么用_C语言的main函数到底该怎么写

    前言 从开始学习C语言到现在,我们似乎看到了很多个版本的main函数,那么哪一种才是正确的呢?我们先来看看目前有哪些版本. main函数版本 第一种,没有返回值,没有入参: main() 在C89标准 ...

最新文章

  1. BIBM系列论文阅读笔记
  2. C#后台利用正则表达式查找匹配字符
  3. 中国.NET域名注册量近55万个 稳居全球第三位
  4. CTF——PHP审计——变量覆盖
  5. python变量名要求_Python中用中文变量名、函数名,会影响性能吗?
  6. java自动识别验证码_Java使用OCR技术识别验证码实现自动化登陆方法
  7. 数据科学 IPython 笔记本 9.11 结构化数据:NumPy 的结构化数组
  8. 无法使用带括号的初始值设定项初始化数组_leetcode32. 最长有效括号
  9. SQL基础知识总结二
  10. stm32移植paho_paho.mqtt.c开源代码的ARM移植
  11. ue4手机ui_Epic Games工程师分享:如何在移动平台上做UE4的UI优化?
  12. Linux C 语言内联汇编
  13. 交流电压电流采样基础知识
  14. win10系统默认壁纸路径
  15. MySQL Enterprise Backup使用简介
  16. 双十一来了,给自己的应用做个icon换脸小功能
  17. 眼球追踪技术 Unity+ HTC vive Pro + DroolonF1 (一)
  18. 99种用Racket说I love you的方式
  19. Excel批量一键切换英文字母大小写
  20. Android 四大组件之 Service_5_拦截电话号码

热门文章

  1. 扎好篱笆桩:三大运营商守住网络安全“命门”
  2. Autodesk Inventor Routed Systems: Harness Autodesk Inventor Routed Systems: Harness Lynda课程中文字幕
  3. Linux设定密码策略
  4. 使用Microsoft Azure 门户 创建win 2012虚拟机
  5. hp ilo 服务器 hpssacli 做 raid
  6. RDP协议,remote desktop protocol,远程桌面协议
  7. 牛客寒假基础集训营 | Day1 D题—hanayo和米饭
  8. 数学速算法_小学数学必考应用题解题思路及方法大汇总(附各年级练习题及答案)...
  9. 消息队列系列之分布式消息队列Kafka
  10. 国信证券学习系列(1)