GCC详解的-Wl选项说明与测试
在GCC编译程序时,由于GCC命令不仅能够编译,也能够链接程序,GCC链接程序是通过ld命令实现。那如何将GCC的命令行参数传递给ld命令呢。通常在编译时通过使用-Wl这个选项来实现的。
测试例程
测试例程如下:(libc.so.6是复制/lib下到当前路径下)
编译
gcc -o test test.c -I. -L. -lc -Wl,-rpath=.
其中
-I. 是指定头文件路径为当前目录下;
-L. 是指定库文件路径为当前目录下;
-lc 是从-L指定库文件路径下去找libc.so.6这个库,也就是库名砍头去尾(类似使用过-lpthread)
-Wl,-rpath=. 为告诉编译器将后面的参数传递给链接器>
-Wl,其格式如下:
gcc -Wl,param1,param2,param3,...
在调用ld命令时,会等效于如下:
ld param1 param2 param3
注意:-Wl, 后的逗号(,)必不可少,如果要传递多个参数,参数之间间用逗号,分隔
-Wl,-Bstatic
指定后续ld在处理 -l 参数来链接库文件的链接方式首选静态库
-Wl,-Bdynamic
指定后续ld在处理 -l 参数来链接库文件的链接方式首选动态库
例如: -Wl,-Bstatic -la -lb -lc -Wl,-Bdynamic -ld -le
会被解释成 :ld liba.a libb.a libc.a libd.so libe.so
-Wl,-rpath -Wl,/home/yimning/linux/rpatch_test/
会被解释成:ld -rpath /home/yimning/linux/rpatch_test/
查看关联库指向与rpatch(编译之后)
此时查看libc.so.6的依赖库路径变为./libc.so.6
查看test的文件信息如下这一行:
0x000000000000001d (RUNPATH) Library runpath: [.]
GCC详解的-Wl选项说明与测试相关推荐
- GCC详解的-Wl选项说明
在GCC编译程序时,由于GCC命令不经能够编译,也能够链接程序,GCC链接程序是通过ld命令实现的,如何将GCC的命令行参数传递给ld命令呢,这就是通过-Wl,来实现的. 格式如下: gcc -Wl, ...
- Gcc详解以及静态库、动态库生成
[转] Gcc详解以及静态库.动态库生成 http://www.360doc.com/content/10/0619/14/1795182_33985297.shtml 1.gcc包含的c/c++编译 ...
- 11. shell当中read详解,read语法选项,read用法示例,脚本示例,while read line详解,掌握原则
shell当中read详解,read语法选项,read用法示例,脚本示例,while read line详解,掌握原则 文章目录 1.1 read详解 1.2 用法示例 1.3 while read ...
- 详解C调用lua脚本效率测试
详解C调用lua脚本效率测试 C调用lua脚本效率测试是本文要介绍的内容,以下代码以C语言为基准,测试了C调用Lua循环和循环调用Lua的效率.结论是不要频繁地穿越C/Lua边界. #include ...
- java 日志 异步_log4j 详解异步日志的配置和测试
log4j 详解异步日志的配置和测试 日志可以帮助我们分析故障原因,做些数据挖掘的工作.最简单的日志方法,就是自己写个写文件的方法,在需要打日志的时候调用下,但是这显然不可能在实际工程上用.还有个问题 ...
- 测试安装详解_Linux的/opt目录(测试实用篇)
在linux环境测试时,会部署到/opt目录下,这是为何呢? 下面来详解Linux的/opt目录: -------------------------------------------------- ...
- GCC详解-gcc之-Wl选项
1.介绍 -Wl后面的东西是作为参数传递给链接器ld的.比如: gcc -Wl,aaa,bbb,ccc 最后会被解释为: ld aaa bbb ccc 2.-Wl,-Map=xxx.txt 生成map ...
- android菜单详解二:选项菜单
创建一个选项菜单 选项菜单里应该包含基本的activity动作和必须的导航条目 (例如,一个打开程序设置的菜单项). 选项菜单的菜单项有两种不同的选择方法,一是菜单项按钮,二是通过 Action Ba ...
- TCP-IP详解:SACK选项(wireshark抓包有SLE和SRE的SACK包)
目录 1. 前言 2. 名词解释 3. TCP SACK选项 3.1 SACK option格式 3.2 SACK(RFC2018) 3.3 D-SACK(RFC2883) 3.4 举例说明 4. w ...
最新文章
- (转)Spring定时任务的几种实现
- 【翻译】Ext JS最新技巧——2015-8-11
- webstorm激活+汉化教程
- [渝粤题库]陕西师范大学《幼儿园语言教育》作业
- EaglePHP开源框架全新改版(v1.8)
- SpringMVC、SpringBoot拦截器的实现和原理
- java excel图表_Java 创建Excel图表
- 苹果11触屏不灵敏_苹果iPhone11Pro屏幕失灵怎么办
- 安装python3.8出现ModuleNotFoundError: No module named ‘_ctypes’解决办法
- word左边左对齐,右边右对齐
- 古月居 ROS 入门21讲--PA17 ROS中坐标系管理系统笔记
- 微众银行为甘肃省职业院校技能大赛“区块链技术与应用”赛项提供技术支持
- C. Get an Even String
- PreScan快速入门到精通第三十四讲基于PreScan进行超声波雷达传感器仿真
- Spring-day01
- 从滚动条到画布的几个代码文件——Python学习笔记之十七
- 【大题整理】操作系统
- java redis 过期_Redis中的键值过期操作
- 彻底删除paragon ntfs for mac
- Qt实现小型的超市收银系统