Linux下编译一个静态链接的程序的注意点
2. 要注意ld的一个特性:当ld查找一个symbol的时候,ld只会往后查找,不会往前查找。比如程序以来两个库A和B,而A库又调用了B库中的函数,那 么编译的时候,在命令行上,A库文件要出现在B库文件的前面。当ld发现A库中某个函数找不到时,他就会往后查找,于是在B库中找到了这个函数,OK。如 果AB两个库互相依赖,那么一般命令行中要写成A B A或B A B这样的格式。这就是为什么也会经常看到命令行中有重复出现相同库的原因。比如A B A这种情况,当ld发现A中有个函数undefined时,往后查找,在B中找到了,OK;继续在B中发现一个函数undefined,也往后找,在A中 找到了该函数,然后也OK了。
3. 当不知道哪个函数在哪个.a中的时候,用objdump -t <filepath>|grep xxx来查找即可。注意看objdump的manual,不是grep出了东西就一定表示该库中有这个函数,还要看前面的flag。
还有一个非常重要的内容:在一个静态链接的程序中,不能出现dlopen函数调用,看下面:
The dlopen/() function is available only to a dynamically-linked process. A statically-linked process (one where libc is linked statically) can't call dlopen() because a statically-linked executable:
* doesn't export any of its symbols
* can't export the required structure for libraries to link against
* can't fill structures at startup needed to load subsequent shared objects.
看看此文是不是一个情况:http://www.cnblogs.com/super119/archive/2011/03/06/1972333.html
转载于:https://www.cnblogs.com/super119/archive/2011/03/26/1996124.html
Linux下编译一个静态链接的程序的注意点相关推荐
- Linux 下编译并运行C语言程序
Linux下编译并运行C语言程序 ,以Centos 系统为例 1>新建一个hello.c文件 可以直接用图形用户界面新建也可以使用命令新建. 用命令行的话,要用到Linux下的vi编辑器的相关命 ...
- Linux下动态链接库与静态链接库(编写、编译)
这里写目录标题 函数库的概念 动态库的编译 静态库的编译 动态库相对于静态库的优点和缺点 优点 缺点 函数库的概念 函数库一般分为静态库和动态库两种. 静态库: 是指编译链接时,把库文件的代码全部加入 ...
- linux 程序占内存,linux下,一个运行中的程序,究竟占用了多少内存
1. 在linux下,查看一个运行中的程序, 占用了多少内存, 通常的命令有php (1). ps aux:html 其中 VSZ(或VSS)列 表示,程序占用了多少虚拟内存.linux RSS列 ...
- vss2010c语言怎么运行,在Linux下使用gcc运行C语言程序
Linux下使用最广泛的C/C++编译器是GCC,大多数的Linux发行版本都默认安装,不管是开发人员还是初学者,一般都将GCC作为Linux下首选的编译工具.本教程毫不犹豫地使用GCC来编译C程序. ...
- Linux下编译连接mysql数据库
1.在Linux下编译连接mysql数据库的程序时,需要使用安装Mysql数据库时自带的mysql_config脚本.它会为你编译MySQL客户端,并连接到MySQL服务器提供有用的信息.需要使用下面 ...
- linux下软件编译终止,[2018年最新整理]linux下编译运行程序命令大全.ppt
[2018年最新整理]linux下编译运行程序命令大全 1. 项目课题引入 2. Vi编辑器的使用方法 3. Linux中C语言程序的编辑 4. Linux中C语言程序的运行 5. 现场演示案例 课题 ...
- Linux错误27,解决在linux下编译32程序出现“/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录问题”...
centos64位编译32位代码,出现/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录,需要安装32位的glibc库文件. 安装 ...
- linux取消头文件链接,【原创】Linux下编译链接中常见问题总结
前言 一直以来对Linux下编译链接产生的问题没有好好重视起来,出现问题就度娘一下,很多时候的确是在搜索帮助下解决了BUG,但由于对原因不求甚解,没有细细研究,结果总是在遇到在BUG时弄得手忙脚乱得. ...
- Linux环境下编译并执行ava helloworld程序
http://blog.lupaworld.com/home-space-uid-24466-do-blog-id-2578.html 已经学会怎样在Windows下怎样编辑,编译和运行Java程序了 ...
最新文章
- 黑白球JAVA_桶中取黑白球 - jiacut的个人页面 - OSCHINA - 中文开源技术交流社区
- [转载]java中Date,SimpleDateFormat
- Struts2自定义拦截器实例—登陆权限验证
- 论文笔记:[ICLR 2020] Tips for prospective and early-stage PhD students
- MATLAB 使用CNN拟合回归模型预测手写数字的旋转角度(卷积神经网络)
- 腾讯Techo开发者大会揭晓云存储发展趋向:高性能、高可用、高性价比
- Android开发笔记(八十一)屏幕规格适配
- matlab怎么更改图形窗口的句柄值,matlab图形句柄属性
- 区块链 以太坊 solidity 事务控制和异常处理 require assert
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第2节 Stream流式思想概述_2_使用Stream流的方式,遍历集合...
- 猿创征文|C++软件开发值得推荐的十大高效软件分析工具
- Oracle查看表空间及使用情况
- SI 9000 及阻抗匹配学习笔记(三)
- 进程调度算法的模拟实现
- VSCode使用TSLlint校验TS代码
- jqwidgets简单技术
- DCOS快速部署手册
- html是网页病毒吗,无弹窗浏览器 目前最具效果性的防网页病毒软件
- Nacos默认用户名和密码
- Doris(一)-简介、架构、编译、安装和数据表的基本使用
热门文章
- 分布式消息通信ActiveMQ原理-持久化策略-笔记
- 直播源码和短视频源码,相亲相爱的一家人
- 苹果手机(ios)拍照上传图片旋转90度问题---java后台处理
- 《Android传感器开发与智能设备案例实战》——第2章,第2.4节安装ADT
- 【负载均衡】揭开F5 BIG-IP的神秘面纱(一)
- 适合于小团队产品迭代的APP测试流程
- 一寸、两寸证件照photoshop批处理动作
- 基于Tomcat5.0和Axis2开发Web Service代码详解
- 使用Hexo搭建个人博客网站
- 通过Anaconda在Ubuntu16.04上安装 TensorFlow(GPU版本)