hello.h
#ifndef HELLO_H #define HELLO_H void hello(const char *name); #endif //HELLO_H
hello.c
#include <stdio.h> void hello(const char *name) { printf("Hello %s!\n", name); }
main.c
#include "hello.h" int main() { hello("everyone"); return 0; }
生成 .o 文件
gcc -c hello.c
生成静态库文件
ar cr libmyhello.a hello.o gcc -o hello main.c -L. -lmyhello ./hello Hello everyone!
生成动态库
gcc -shared -fPIC -o libmyshare.so hello.c gcc -o hello main.c -L. -lmyhello ./hello 结果 ./hello: error while loading shared libraries: libmyhello.so: cannot open shared object file: No such file or directory 用strace 运行hello能看到在指定目录下找不到文件,将libmyshare.so拷贝到/usr/lib64目录下 再运行./hello就正常了
一些相关的命令
名称 | 含义 |
ar | 创建静态库,插入删除列出和提取成员 |
ldd | 列出一个可执行文件在运行时所需要的共享库 |
gcc | 强大的编译工具 |
nm | 列出一个目标文件的符号表中定义的符号 |
size | 列出目标文件中section的名字和大小 |
objdump |
所有二进制工具之母 能够显示一个目标文件中所有的信息 最大的作用是反汇编.text 片段中的二进制指令 |
readelf |
显示一个目标文件的完整结构 包括ELF头中编码的所有信息,包含size和nm的功能 |
strace | 跟踪调试工具 |
strip | 删除多余的段 |
objcopy | 将一个目标文件中的内容拷贝到另一个中 |
参考
相关推荐
得到了fbx模型的http链接,使其加载在小程序端,都是适配小程序版本的代码 其中three_new.js是小程序版的3D加载库文件 FBXLoader_new是小程序版本的fbx模型的加载器 inflate.min.js是小程序版的压缩解压库 model...
java程序中加载动态链接库文件方法,涉及到C语言实现控制底层硬件的方法
由于那时内存很贵且容量有限,计算机的速度很慢(以今天的标准),为了创建复杂的内存覆盖策略(以将大容量的程序加载到小容量内存中),以及重新编辑先前链接过的文件(以节省重新创建程序的时间),这些链接器都...
《链接器和加载器》首先通过实例深入浅出地阐述了在不同的编译器和操作系统中链接和加载过程的差异。在这个基础上,作者提出了清晰实用的忠告,来帮助你创建更快、更清晰的代码。你将会学习如可规避和Windows DLL相关...
《链接器和加载器》讲述构建程序的关键工具——链接器和加载器,内容包括链接和加载、体系结构、目标文件、存储分配、符号管理、库、重定位、加载和覆盖、共享库、动态链接和加载、动态链接的共享库,以及着眼于成熟...
大家对于Hello World程序应该非常熟悉,随便使用哪一种语言,即使还不熟悉的语言,写出一个Hello World程序应该毫不费力,但是如果让大家详细的说明这个程序加载和链接的过程,以及后续的符号动态解析过程,可能还会...
《链接器和加载器》讲述构建程序的关键工具——链接器和加载器,内容包括链接和加载、体系结构、目标文件、存储分配、符号管理、库、重定位、加载和覆盖、共享库、动态链接和加载、动态链接的共享库,以及着眼于成熟...
提供一个相对易于使用的引导加载程序,与大多数 PIC24 和 DSPIC33 系列处理器兼容。此引导加载程序不使用中断,因此您的默认编译步骤只需对链接描述文件进行微小更改即可工作。 通信协议在 comm-protocol.rst 文档...
几乎从有计算机以来,链接器和加载器就是软件开发工具包中的一部分,因为他们是 允许使用模块(而不是一个单独的大文件)来构建程序的关键工具。 早在 1947 年,程序员们就开始使用原始的加载器:将程序的例程存储在多个...
几乎从有计算机以来,链接器和加载器就是软件开发工具包中的一部分,因为他们是允许使用模块(而不是一个单独的大文件)来构建程序的关键工具。
课程通常对链接和加载都缺乏重视。这对于以前讨论Fortan,Pascal,C,和不使 用内存映射或共享库的操作系统而言可能是对的,但是现在就不那么正确了。 C++,Java和其它的面向对象语言需要更加完善的链接环境。使用...
动态链接库输出函数的动态加载C++源代码程序小实例
链接与加载详解,链接与加载的知识是程序人员必须掌握的~
几乎从有计算机以来,链接器和加载器就是软件开发工具包中的一部分,因为他们是 允许使用模块(而不是一个单独的大文件)来构建程序的关键工具。 早在 1947 年,程序员们就开始使用原始的加载器:将程序的例程存储...
在微信小程序中,要显示一张图片,有两种图片加载方式: 加载本地图片 加载网络图片 加载本地图片 </image> src=”/image/arrowright.png” 这句就是加载本地图片资源的。想想iOS中的加载本地图片,...
Linker and Loader (链接器与加载器)是一本深入描述程序的生成与加载过程以及程序与操作系统关系的书,对程序员提升专业素质大有裨益。
DLL动态链接库实例,在MFC中隐式加载dll程序源码
利用VC++实现动态链接库动态加载的方式。文件中包含DLL文件的编写以及加载测试程序,需要的可以下载参考。内容简单,阅读性强!
基于MFC编程: 1.创建一个动态链接库,在该动态链接库中添加一个...5.实现利用加载时动态链接的方法引用DLL中的导出函数; 6.实现使用运行时动态链接的方法引用DLL中的导出函数; 7.系统具备友好简洁的操作界面。
本文介绍程序的链接与加载过程,可作为深入了解程序运行方面知识的参考。