c语言编译说文件不存在,c语言编译时缺少头文件,库的解决办法

问题产生原因

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

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)

各个过程图片如下:

7c3f55947d5c174d7fe9a64bd79e9240.png

5177f20a7eefabd593e21ccede984abd.png

5c1746f5552d8c4fd8f905d02ddcf788.png

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

gcc main.c -o main.exe

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

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

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

解决问题办法

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

头文件找不到的话,我们就指定头文件搜索路径 -I

库文件找不到的话,我们就指定库文件搜索路径 -L

当然我们也可以使用-l(小写L)来指定具体的库文件

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值