返回

程序的编译和链接

发布时间:2023-02-14 22:38:25 280
# webkit# linux

程序的编译、链接

在多道程序环境下,程序处理过程:

  1. 编译:由编译程序将用户源程序编译成若干个目标模块。
  2. 链接:由链接程序将目标模块和相应的库函数链接成装入模块。
  3. 装入:由装入程序将装入模块装入内存。

程序的编译和链接_系统调用

GCC编译

检查GCC的安装, 输入 ​​gcc -v​​ 可查看当前版本。

  1. 新建文件 main.c
  2. 编译->生成可执行文件:gcc main.c
  3. 运行(linux):./a.out ,运行(cygwin/Windows):a.exe

在后台运行

./a.out &

编译时可以指定编译后的文件名

​gcc -o hello main.c​​ 生成的不是a.out 而是 hello

运行: ​​./hello​

链接

根据链接的时间不同可以分成3种。

  1. 静态链接方式
  2. 装入时动态链接
  3. 运行时动态链接

使用头文件如下:

#include <dlfnc.h>

1、dlopen()

打开一个动态链接库。

系统调用格式:

void* dlopen(const char* pathname, int flag);

flag 取值:
RTLD_NOW: 立刻解析出所有符号
RTLD_LAZY:延迟解析所有符号

2、dlsym()

根据动态链接库操作句柄与符号,返回符号对应的地址。

系统调用格式:

void* dlsym(void* handler, const char* symbol);

3、dlclose()

关闭指定的动态链接库。

系统调用格式:

int dlclose(void* handle);

按装入时物理地址的确定时机不同而分成3种:

  1. 绝对装入方式
  2. 可重定位装入方式
  3. 动态运行时装入方式
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
MyBatis开发步骤 2023-02-14 22:12:18