首页 > 其他分享 >gcc笔记

gcc笔记

时间:2024-07-13 19:29:36浏览次数:17  
标签:gcc 头文件 sub lib 笔记 main hello

一、.c文件到app的过程

二、执行选项

gcc -E -o hello.i hello.c //预处理:展开宏,查看头文件

gcc -S -o hello.s hello.i//编译:形成汇编码

gcc -c -o hello.o hello.s//汇编:形成机器码

gcc -o hello hello.o//链接

三、形成过程

四、语法错误,函数申明定义检查时间

编译时(-S选项)会检查语法错误和函数是否申明,不会检查函数是否定义

链接时会检查函数定义

五、头文件查找路径

#include <stdio.h>

<>表示去系统,工具链指定的目录查找头文件

#include “sub.h”

“”在当前目录查找头文件

六、比较有用的选项

gcc -E main.c  // 查看预处理结果,比如头文件是哪个

gcc -E -dM main.c > 1.txt  // 把所有的宏展开,存在 1.txt 里

gcc -Wp,-MD,abc.dep -c -o main.o main.c  // 生成依赖文件 abc.dep,后面 Makefile 会用

echo 'main(){}' | gcc -E -v -  // 它会列出头文件目录、库目录 (LIBRARY_PATH)

七、生成动态库和静态库

静态库:

gcc -c main.o main.c
gcc -c sub.o sub.c
ar crs libsub.a sub.o sub2.o sub3.o(可以使用多个.o 生成静态库)
gcc -o test main.o libsub.a

 动态库:

gcc -c main.o main.c
gcc -c sub.o sub.c
gcc -shared -o libsub.so sub.osub2.o sub3.o(可以使用多个.o 生成动态库)
gcc -o test2 main.o libsub.so

通常使用gcc -o test2 main.o -lsub链接,可简写库名称,但此时会报错找不到库,因为默认寻找库是在/lib或者/usr/lib

此时需用

gcc -o test2 main.o -L ./ -lsub

使用-L指定库的目录,使用-l指定库文件目录

八、运行

运行./test会报错找不到库,因为库默认是在/lib或者/usr/lib

两种解决办法:

1.将库放到lib里面

2.指定路径export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:动态库路径

第二种方法会先在LD_LIBRARY_PATH找,找不到后再在(动态库路径)找

九、总结

标签:gcc,头文件,sub,lib,笔记,main,hello
From: https://blog.csdn.net/m0_61831106/article/details/140403188

相关文章

  • 《项目管理》-笔记1
    PMBOK解读1.1项目和项目管理项目:项目是为创造独特的产品、服务或成果而进行的临时性工作。项目管理:在项目的活动中运用知识、技术、工具、技巧,以满足项目要求。1.2十大知识领域(1)项目整合管理项目整合管理包括为识别、定义、组合、统一和协调各项目管理过程组的各种过程和......
  • [笔记] SEW的振动分析工具DUV40A
    1.便携式振动分析仪DUV40A文档编号:26871998/ENSEW是一家国际化的大型的机械设备供应商。产品线涵盖电机,减速机,变频器等全系列动力设备。DUV40A是他自己设计的一款振动分析工具。  我们先看一下它的软硬件参数:内置两路传感器,并且具备外扩三路单自由度传感器的能力。通......
  • 计算机组成原理考研手写笔记
     1计算机系统概述1.1计算机系统概述1.2指令执行过程1.3计算机性能指标2数据的表示和运算2.1定点数的编码2.2整数类型转换2.3逻辑门电路符号2.4基本运算部件2.5定点数移位运算2.6定点数和无符号数的加减运算2.7加法器原理/补码加减运算电路/A-......
  • CTF杂项之图片隐写(一)(渡栗的学习笔记)
    目录​编辑一、解题思路二、图片隐写1.常见的图片格式介绍2.十六进制修改3.EXIF隐写4.图种5.LSB隐写6.SilenEye7.盲水印三、工具四、题解问题(渡栗)一、解题思路二、图片隐写常见的图片隐写:细微的颜色差别、GIF图多帧隐藏(图片通道隐藏、不同帧图信息隐藏、不......
  • vscode操作笔记
    ctrlshifp打开命令窗口 修改vscode左边搜索框或者文件名字显示的字体的方法(设置里面不包含,只有自己改css文件)找到workbench.desktop.main.css文件,修改以下属性.monaco-workbench.part>.content{font-size:14px;font-family:'YouYuan'} 我使用的插件有ms-vscode.cppto......
  • 三元运算符 栈 堆 隐式转换 笔记
    是什么:相当于if语句的语法糖代码示例:std::stringrank=level>10?"Master":"Begining";判断条件?为真保留:为假保留;可以嵌套使用,最好别用看的头疼;栈通常非常小通常为1兆2兆;浅要提及堆上飞陪比栈花费更多时间,而且要手动释放内存若对象太大或要显式地控制对象的生存期,就在堆......
  • FFmpeg开发笔记(三十七)分析SRS对HLS协议里TS包的插帧操作
    ​《FFmpeg开发实战:从零基础到短视频上线》一书的“2.1.2 音视频文件的封装格式”介绍了视频流的PS格式和TS格式。由于TS包的长度固定,从TS流的任一片段开始都能独立解码,因此可以把TS当成音视频文件的封装格式。鉴于TS包的独立解码特性,HLS协议引入了TS格式作为传输单元。HLS协......
  • GCC介绍
    GCC是什么GCC(GNUCompilerCollection)是一个开源的编译器套件,由GNU项目开发和维护。GNU编译器套件包括C、C++、Objective-C、Fortran、Ada、Go和D语言的编译器,以及这些语言的库(libstdc++,…)。GCC最初作为GNU操作系统的编译器,后来为了满足各种编程语言的需求,加入了......
  • 【读书笔记】《深度神经网络FPGA设计与实现》(孙其功)第三章 深度神经网络基础层算子介
    深度神经网络基础层算子介绍1.卷积算子2.反卷积算子3.池化算子(1)平均池化算子:(2)最大池化算子:4.激活算子5.全连接算子6.Softmax算子7.批标准化算子8.Shortcut算子1.卷积算子基础概念(1)卷积核(Kernel)。图像处理时,对输入图像中一个小区域像素加权......
  • 算法学习笔记(8.3)-(0-1背包问题)
    目录最常见的0-1背包问题:第一步:思考每轮的决策,定义状态,从而得到dp表第二步:找出最优子结构,进而推导出状态转移方程第三步:确定边界条件和状态转移顺序方法一:暴力搜素代码示例:方法二:记忆化搜索时间复杂度取决于子问题数量,也就是O(n*cap)。实现代码如下:方法三:动态规划代......