gcc编译器(代码的 预处理/汇编/编译/连接)
C程序员一般写程序会定义 .c和.h两种文件
.c文件(源文件)中一般放代码的实现,.h文件(头文件)中放 各种声明和定义。
gcc -E __.c 只做预处理,可以生成.i文件
gcc -c __.c 只编译不连接,生成.o文件
gcc -S __.c 生成汇编,生成 .s文件
gcc __.c 预处理、编译和连接
gcc -o 指定目标文件名
gcc -E __.c -oxx.i 生成.i文件
gcc -Wall 可以显示更多的警告信息
C语言#include 查找头文件的途径:
1 ""会查找 当前目录(<>不查找)
2 gcc -I 指定的目录
3 系统目录(/usr/include等)
4 用环境变量
(CPATH/C_INCLUDE_PATH)配置的目录
#pragma 可以额外新增一些功能,
#pragma GCC dependency 文件名
比较更新时间,如果 文件名比当前文件新,产生警告
#pragma GCC poison 名字
这个名字将被禁用,否则 产生 错误
#pragma pack(正整数)
可以设置 结构体的对齐和补齐的单位
程序员可以把自己的代码打包成库文件,再提供一个头文件即可。
库文件包括静态库和共享库(动态库),静态库的使用方式 是代码的复制,共享库的使用方式 是函数指针(函数地址)。
静态库优点是 代码独立,效率稍好,缺点是 代码的空间太大,不利于修改和维护。
共享库优点是 代码空间较小,修改、维护比较方便,缺点是 代码依赖于共享库文件。
共享库的使用更加广泛。共享库 以.so结尾,静态库 以 .a结尾。
1 静态库的使用步骤
1.1 生成 静态库文件(.a)
a 写源代码
b 编译生成目标文件(.o)
c 使用ar -r 命令生成静态库文件
ar -r lib__.a __.o
1.2 调用静态库文件
前提:需要lib__.a和__.h文件
a 写调用源代码(test.c)
b 编译 (gcc -c)
c 连接静态库文件,有三种方法:
1) gcc __.o lib__.a (直接连接)
2) 配置环境变量 LIBRARY_PATH,把库文件所在路径配进去,然后用 gcc __.o -l__(库文件名)
3) gcc __.o -l__ -L库文件路径
2 共享库的使用步骤
2.1 生成 共享库文件(.so)
a 写源代码
b 编译生成目标文件(.o)
gcc -c -fpic __.c (-fpic可以不加)
c 生成共享库文件
gcc -shared __.o -o lib__.so
2.2 调用 共享库文件
和静态库一样
注:想运行共享库程序,必须配置LD_LIBRARY_PATH.
分享到:
相关推荐
在CUDA编程中,有时我们需要将CUDA源代码编译成静态库文件,以便在其他项目中进行链接和使用。本文将详细讲解如何使用CUDA的编译器nvcc将`.cu`...同时,权衡静态库和动态库的优缺点,根据项目需求选择合适的编译策略。
- 多种显示模式:支持静态、动态和半动态显示模式,以适应不同性能需求。 - 内置字符库:内置ASCII字符集,简化文本显示。 - 图形处理能力:提供点画、线画、填充等功能,支持基本图形绘制。 - 背光控制:内置...
这款芯片支持多种显示模式,包括静态、动态、滚动等,适合于各种应用,如仪表盘、工业设备显示屏、手持设备等。 在嵌入式系统中,驱动UC1638通常需要以下步骤: 1. 初始化:在系统启动时,需要对UC1638进行初始化...
静态网页模板是一种预先设计好的页面布局,它包含了HTML(超文本标记语言)代码,可以快速构建出没有动态数据交互的网页。这些模板通常包含头部、主体和底部等常见的网页结构,以及预设的颜色方案、字体样式和图像...
7. **内存管理**:UC GUI的内存管理策略允许开发者根据实际需求定制,如动态分配或静态分配图形对象的数据结构。 8. **优化技巧**:为了适应嵌入式环境,UC GUI提供了一些优化技巧,如位图压缩、缓存策略等,以减少...
6. **内存管理**:uc/OS需要静态或动态内存分配来创建任务、信号量、互斥锁等。STM32的内存布局和uc/OS的内存需求应协调一致。 7. **任务调度**:uc/OS提供API用于任务间的通信和同步,如信号量、消息队列、事件...
4. 内存管理:UC/OS-II采用静态和动态内存分配策略,允许开发者灵活地管理内存资源。 5. 任务间通信:支持消息队列、信号量、互斥信号量和邮箱等多种任务间通信机制,满足不同场景需求。 6. 可移植性:UC/OS-II的...
5. **内存管理**:uc/os-ii提供了动态和静态内存分配机制,保证了内存的有效利用。 6. **中断处理**:uc/os-ii支持中断服务例程,能在中断发生时快速响应,然后在适当的时机恢复被中断的任务。 7. **信号量和互斥...
该控制器能够处理灰度显示,支持多种显示模式,如静态、动态、双缓冲等,且具备较高的显示性能。在本项目中,UC1698被配置为驱动160*160像素的液晶屏,这样的分辨率对于小型设备来说足够清晰,可以满足大部分可视化...
3. **JavaScript/jQuery**:虽然描述中没有明确提及,但为了实现交互效果,如下拉菜单、点击跳转等,通常会用到JavaScript或jQuery库,它们可以简化DOM操作,实现动态交互功能。 4. **响应式设计**:源码采用响应式...
uC_GUI是一款用于嵌入式系统的图形用户界面库,它以占用资源少、性能高和可配置性强著称。uC_GUI完全使用ANSI-C编写,这意味着它易于修改和移植,尤其适合于资源受限的嵌入式平台。uC_GUI能够提供类似于Windows风格...
在本项目中,"前端静态模板-手机模仿UC资讯-学生作业毕设实训素材.zip" 提供了一个完整的前端应用源码示例,适用于学生进行毕业设计学习。这个模板旨在模仿著名的移动浏览器UC资讯的界面和功能,帮助学习者掌握前端...
3. **嵌入式库与框架**: UC Linux 支持多种轻量级的C++库,如μC/OS-II、pthreads 和 μITRON,这些库可以帮助开发者构建多线程应用程序。此外,还有如 Embedded Boost 和 Poco C++ 这样的轻量级库,它们提供了一套...
这个压缩包“精典源码之模仿UC等软件启动画面加载时闪烁点的样式.rar”提供了一种实现这种效果的方法。下面将详细解释这个启动画面的实现原理、涉及的技术以及可能的应用场景。 首先,闪烁点的动画效果通常是通过...
jQuery是前端开发中最常用的库之一,以其简洁的API和丰富的插件生态系统著称。在这个项目中,jQuery被用来实现了一些视觉效果,如索引按钮和滑动切换,这些效果极大地提升了用户界面的吸引力和易用性。 首先,让...
内存管理方面,uC/OS-III支持静态和动态内存分配。操作系统允许在设计时预先分配内存,以确保对内存的管理更为高效和安全。动态内存管理则涉及更为复杂的技术,如内存堆的管理,操作系统提供了相应的API来分配和释放...
6. **图片和其他媒体**:如logo、图标等静态资源。 7. **文档**:README或INSTALL文件,包含安装和使用指南。 8. **库和框架**:包含系统依赖的第三方库或PHP框架,如Laravel、CodeIgniter等。 9. **许可证文件**:...
8. **静态库和动态库**:静态库在编译时被合并到目标代码中,而动态库在运行时被加载,两者各有优缺点。 9. **项目配置**:在Visual Studio中,项目配置涉及到编译器设置、链接器设置、调试选项等,以满足特定项目的...
此脚本定义了一个项目MyProject,创建了动态库pr和静态库prs,并生成了一个可执行文件mypr,所有目标均与数学库m关联。最后,它指定了安装路径。 在实际项目中,大型工程通常会有更复杂的结构,每个子目录可能包含...