gcc 学习笔记

【gcc】RtpTransportControllerSend学习笔记 3:gcc 算法 gcc 阅读详情
gcc编译程序的过程


预处理(Pre-Processing)
编译(Compiling)
汇编(Assembling)
链接(Linking)


选项名
作用
-o
产生目标(.i、.s、.o、可执行文件等)
-c
通知gcc取消链接步骤,即编译源码并在最后生成目标文件
-E
只运行C预编译器
-S
告诉编译器产生汇编语言文件后停止编译,产生的汇编语言文件扩展名为.s
-Wall
使gcc对源文件的代码有问题的地方发出警告
-Idir
将dir目录加入搜索头文件的目录路径
-Ldir
将dir目录加入搜索库的目录路径
-llib
链接lib库
-g
在目标文件中嵌入调试信息,以便gdb之类的调试程序调试



静态库与共享库


静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库

共享库( .so或.sa ):程序在运行的时候才去链接共享库的代码,多个程序共享使用库的代码。



一个与共享库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码
在可执行文件开始运行以前,外部函数的机器码由操作系统从磁盘上的该共享库中复制到内存中,这个过程称为动态链接(dynamic linking)
共享库可以在多个程序间共享,所以动态链接使得可执行文件更小,节省了磁盘空间。操作系统采用虚拟内存机制允许物理内存中的一份共享库被要用到该库的所有进程共用,节省了内存和磁盘空间。
生成静态库

hello_fn.h
hello_fn.c
main.c
gcc -Wall hello_fn.c -o hello_fn.o
ar rcs libhello.a hello_fn.o
ar是gnu归档工具,rcs表示(replace and create)
gcc -Wall main.c libhello.a -o main
gcc -Wall -L. main.c -o main -lhello


库搜索路径
C_INCLUDE_PATH、LIBRARY_PATH
从左到右搜索-I -L指定的目录。
由环境变量指定的目录
由系统指定的目录


生成共享库
shared: 表示生成共享库格式
fPIC:产生位置无关码(position independent code)
库名规则:libxxx.so
示例:gcc -shared -fPIC hello.o –o libhello.so
使用共享库
编译选项
l:链接共享库,只要库名即可(去掉lib以及版本号)
L:链接库所在的路径.
示例:
gcc main.o -o main –L. -lhello

运行共享库

q1、拷贝.so文件到系统共享库路径下
    一般指/usr/lib
q2、更改LD_LIBRARY_PATH
q3、ldconfig
 配置ld.so.conf,ldconfig更新ld.so.cache



Vivado新手必看:5分钟搞定FPGA程序固化到Flash(附MCS文件生成全流程) 本文为FPGA新手详细解析了如何将程序固化到Flash存储器的完整流程。核心在于理解SRAM工艺FPGA断电易失的特性,并利用Vivado工具将比特流文件转换为Flash可识别的MCS文件。文章重点拆解了生成MCS文件的关键配置步骤、硬件连接要点,以及通过JTAG烧写Flash的实战操作,并提供了常见启动失败问题的排查清单,帮助开发者实现设计从调试到产品部署的关键跨越。 阅读详情

相关推荐

我看MFC的过去、现在和未来

首先说句题外话,虽然我现在的“主业”是Qt,但自己扪心自问,对MFC的熟悉程度要超过Qt。正是由于有了对MFC的熟悉,才能在使用Qt时,比较清醒的认清两者的优劣之处,在此暂且不提。 这个话题也可以说是由来已久,众说纷纭,今时我也谈谈自己的感悟。 一、对MFC的总体看法 首先看看云风在其《游戏之旅-我的编程感悟》一书中对MFC的看法: “我所见到的程序员中,很多把C+

qter_wd007的专栏 6115

轻松玩转Linux:GCC

GCC编译器是Linux系统下最常用的CIC++编译器,大部分Linux发行版中都会默认安装。GCC编译器通常以gcc指令的形式在终端中使用。

Li的博客 1008

ANSYS二次开发:Python和ANSYS进行交互操作(PyAnsys库,DPF)

🎈ANSYS二次开发:APDL开发入门准备🎈- 🎈ANSYS二次开发:后处理使用APDL命令流解析结果文件🎈 🎈ANSYS二次开发:Python解析ANSYS结果文件(PyAnsys库)🎈 🎈ANSYS二次开发:Python操作ANSYS(PyAnsys库,PyDPF)🎈 文章目录1、简介2、安装2.1 ansys-mapdl-core2.2 pyaedt2.3 ansys-dpf-core2.4 ansys-dpf-post2.5 ansys-mapdl-reader2.6 G...

爱看书的小沐 2万+

gcc和makefile用法总结(建议收藏)_gcc makefile(2),2024年最新10年阿里开发架构师经验分享

整个项目的逻辑很简单,其中 add.c、sub.c 和 div.c 这 3 个文件中各包含一个函数,分别实现将两个整数做相加、相减和除法操作,而 test.h 仅包含这 3 个函数的声明部分,main.c 是主程序文件,其通过引入 test.h 头文件调用了 3 个函数,从而分别完成了对用户输入的 2 个整数做相加、相减以及除法操作。其中,xxx 代指我们为该库起的名字,比如 Linux 系统自带的一些静态链接库名称为 libc.a、libgcc.a、libm.a,它们的名称分别为 c、gcc 和 m。

2401_84281703的博客 1167

别再买模块了!手把手教你用FT232RL-REEL芯片,从零设计一个USB转串口电路板

本文详细介绍了如何使用FT232RL-REEL芯片从零设计USB转串口电路板,涵盖核心器件选型、原理图设计、PCB布局布线及焊接调试等关键步骤。通过实战案例和性能对比,展示自制电路板在成本、性能和可靠性上的优势,特别适合硬件爱好者和工程师参考。

weixin_30561425的博客 433

DCM、PLL以及DLL等概念及详情

介绍DLL、PLL以及DCM的概念,总结其模块构成、工作原理、相互之间的差异与各自优势。

CLL_caicai的博客 8338

GCC基础笔记

编译器首先将源代码编译成目标文件(通常是以。

weixin_69487761的博客 307

DDR的Controller、Channel、Chip、Rank、Bank、Row、Column、Sided、Dimm

DDR的Controller、Channel、Chip、Bank、Rank、Row、Column、Sided、Dimm

张飞online博客 2万+

gcc的使用学习笔记

gcc小总结

李知恩的一只有理想的Uaena 946

实战分享:一文读懂RS-232总线

RS-232标准接口(又称EIARS-232)是常用的串行通信接口标准之一,它是由美国电子工业协会(Electronic IndustryAssociation,EIA)联合贝尔系统公司、调制解调器厂家及计算机终端生产厂家于1970年共同制定,其全名是“数据终端设备(DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准”。

阿荣嵌入式 8519

博途PLC模糊PID控制(量化因子和比例因子)

参数"量化因子和比例因子",都是为了对清晰值进行比例变换而设置的,其作用是使变量按一定比例进行放大或缩小,以便和我们的模糊论域相匹配完成一一映射。这种变换对整个系统的工作性能也是有影响的。(其实相当于额外引入了比例作用,所以说模糊PID的调节是个系统工程)。限于本人能力,文中难免出现错误和不足,欢迎大家批评和指正。博途PLC的模糊PID控制完整算法可以参看下面这篇文章博途PLC模糊PID控制详解(SCL完整源代码+参数)_RXXW_Dor的博客-优快云博客。......

RXXW_Dor的博客 5269

gcc与Makefile(笔记)

GNU make是一种代码维护工具make工具会根据Makefile文件定义的规则和步骤,完成整个软件项目的代码维护工作一般用来简化编译工作,可以极大地提高软件开发的效率windows下一般由集成开发环境自动生成linux 下需要由我们按照其他语法自己编写make主要解决两个问题一、大量代码的关系维护大项目中源代码比较多,手工编译时间长而且编译命令复杂,难以记忆及维护把代码维护命令及编译命令写在makefile文件中,然后在用工具解析此文件自动执行相应命令,可实现代码的合理编译。

2403_83472896的博客 1485

Oracle EBS R12.2.X JSP部署、编译和配置相关操作。

系统环境 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 背景 在某项目上,需要开发JSP相关程序,比如单点登陆、打印二维条码。当前把JSP部署编译以后,访问提示错误:Requested resource or page is not allowed in this site, 通过查SR发现Oracle EBS R12.2.X版本对客制化JSP进行权限控限,需要设置某些配置文件。 实例操作步骤 上传JSP文件 通常上传到$OA_HTML目录或其子目

陈显平的专栏-Oracle EBS 1911

gcc 内嵌汇编的学习笔记 II

\r\n gcc 内嵌汇编的学习笔记 II --一个简单的条件判断 作者:ShellEx. ShellEx.cn && http://shellex.cublog.cn/ 版权所有 真不……...

钢窟. 287

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

GCC学习笔记(一)

前言 GCC是GNU编译器的集合,可以编译 C, C++, Objective-C, Fortran, Ada等语言。 GCC工作的流程 示例 HelloWorld.c文件内容: #include <stdio.h> void main(void) { printf("Hello World!\n"); } 使用指令 gcc HelloWorld.c -o HelloWorld 最终生成可执行文件HelloWorld。 在直接使用gcc编译文件时,删除了很多临时文件,不利于理解

qq_34163621的博客 376

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Centos7升级gcc学习笔记

转载文章 Centos7升级gcc学习笔记

ddr77的专栏 1094

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

gcc编译器学习笔记

gcc:一个跨平台的大型编译器,将高级语言编译成机器码。

2402_83192253的博客 398

gcc 内嵌汇编的学习笔记 IV

             gcc 内嵌汇编的学习笔记 IV                             --函数调用  作者:ShellEx.   ShellEx.cn && blog.youkuaiyun.com/shellex 版权所有 没有经验,还是通过反汇编出来的代码来学习。先写一个简单的函数调用的C++ code Sample:#include int Add(int a, int

钢窟. 3877

GCC 学习笔记

1、GCC的编译和安装2、预处理    #define 可以支持不定数量的参数。    例子如下:    #define err(...) fprintf(stderr,__VA_ARGS__)    err("%s,%d/r/n","The error code:",48);    扩展为:    fprintf(stderr,"%s,%d/r/n","The error code:",48);

应公子的专栏 1万+

GCC学习笔记

目录一、简介1.1 什么是GCC1.2 GCC、gcc、g++三者关系二、源代码处理流程2.1 预编译2.1.1 处理规则2.1.2 操作示例2.2 编译2.2.1 处理说明2.2.2 操作示例2.3 汇编2.3.1 操作示例2.4 链接2.4.1 链接其他目录中的库2.4.2 静态链接库的创建和使用1. 创建2. 使用2.4.3 动态链接库的创建和使用1. 创建2. 使用 一、简介 1.1 什么是GCC GCC(GNU Compiler Collection)是由GNU开发的编程语言译器 GNU编译器套

GrayD1419的博客 316

gcc学习笔记

gcc常用选项(预处理,编译,汇编,链接) -o 产生目标(.i,.o,.s,可执行文件等) -c 通知gcc取消链接,即编译源码后生成目标文件(.o文件) -E 只运行C预处理器(生成.i文件) -S 生成.s文件 -Wall 使gcc对源文件的代码有问题的地方发出警告 -Idir 将dir目录加入搜索头文件的目录路径 -Ldir 将dir目录加入搜索库的目录路径 -llib 链

linux_Allen的博客 429

C学习笔记-gcc

GNU CC(通常称为GCC)是GNU项目的编译器,它能够编译C、C++语言编写的程序 gcc的优点 使用gcc,程序员可以控制生成二进制执行文件中调试代码的数量和类型。 和其他编译器一样,gcc也可以优化执行代码。 gcc是个交叉平台编译器,所以能够在当前CPU平台上为不同操作系统开发软件。 gcc对C和C++进行了一些扩展,有助于...

weixin_30591551的博客 211

GCC学习笔记1

1   GCC支持的程序设计语言 GCC目前支持的语言有C, C++,Objective-C, Objective-C++, Java, Fortran, Ada, 和 Go。 2  GCC对语言标准的支持 每种可被GCC编译的语言都有一个标准,GCC试图遵循一种或者更多不同版本的标准,可能有一些特殊情况,有时也会有一些扩展。 2.1 C语言     GCC支持三种版本的C标准,不过对最

xubobo的专栏 6085
上一篇: ubuntu 安装配置shh,tftp,nfs 笔记
下一篇: makefile 学习笔记(备忘)
惜朝_
博客等级 码龄10年 9粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值