Makefile 中 -rpath -rpath-link
-rpath和-rpath-link
假设有3个文件,在同一目录下,有这样的依赖关系
test->liba.so->libd.so
如果编译test的时候这样写
gcc test.c –la
warning:libd.so, needed by liba.so not found
解决办法有3个
方法1
gcc test.c –la –ld
方法2
gcc test.c –la -Wl,-rpath-link ./
这样就告诉编译器,当要寻找liba的依赖库时候,请到 ./去找
方法3
gcc test.c –la -Wl,-rpath ./
这样就告诉编译器,当要寻找liba的依赖库时候,请到 ./去找
方法2和方法3有什么区别呢?
-rpath和-rpath-link都可以在链接时指定库的路径;但是运行可执行文件时,-rpath-link指定的路径就不再有效(链接器没有将库的路径包含进可执行文件中),而-rpath指定的路径还有效,程序回到指定的路径中去找库(因为链接器已经将库的路径包含在可执行文件中了。)最后,不管使用了-rpath还是-rpath-link,LD_LIBRARY_PATH还是有效的。
Makefile 中 -rpath -rpath-link的更多相关文章
- makefile中一些编译器选项
Libraries Static Libraries a collection of ordinary object files (目标文件的集合) loaded at program link ti ...
- makefile中的自动化变量$@,$%,$
转自:http://www.2cto.com/os/201302/191344.html makefile中的自动化变量$@,$%,$ 自动化变量 模式规则中,规则的目标和依赖文件名代表了一 ...
- 通用 Makefile(及makefile中的notdir,wildcard和patsubst)
notdir,wildcard和patsubst是makefile中几个有用的函数,以前没留意过makefile中函数的用法,今天稍微看看~ 1.makefile里的函数 makefile里的函数使用 ...
- Makefile 中:= ?= += =的区别
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验 新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = ...
- Makefile中的特殊宏定义以及实用选项
Makefile中的一些特殊宏定义的名字跟shell中的位置变量挺相似的. $? 当前目标所依赖的文件列表中比当前目标文件还要新的文件 $@ 当前目标我名字 $< 当前依赖文件的名 ...
- MakeFile中赋值
Makefile 中:= ?= += =的区别 在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验 新建一个Makefile,内容为 ...
- makefile中引用其他makefile方法
在Makefile中引用其他Makefile文件的方法是,使用inclue filename.mk
- makefile 中 $@ $^ %< 使用【转】
转自:http://blog.csdn.net/kesaihao862/article/details/7332528 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 ...
- makefile中的shell语法
在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙.下面总结了一些. 1:尽在Makefile文件的目标项冒号后的另起一行的代码才是 ...
- makefile中的target到底代表什么?
刚开始用make的时候,以为makefile中名字叫做main的target就是make默认执行的target(中文翻译叫做标的(di,四声),下面统一称呼为标的),然后曾经很天真地犯过这样的错误,就 ...
随机推荐
- 【Maven】 Eclipse使用Maven创建Java Web 项目(一)
需求:创建一个Servlet版本3.0,Java版本是1.7的Maven Web项目 创建环境: 系统:window 7 软件:Eclipse.Maven 创建步骤: 1.使用eclipse工具创建m ...
- CSS粘住固定底部的5种方法
本文主要介绍一个Footer元素如何粘住底部,使其无论内容多或者少,Footer元素始终紧靠在浏览器的底部.我们知道,当内容足够多可以撑开底部到达浏览器的底部,如果内容不够多,不足以撑开元素到达浏览器 ...
- 《温故而知新》JAVA基础三
面向对象 现实定义: 购买手机 阐述描述配置尺寸啥的,要求能打电话,然后服务员给你拿出一款手机,你所阐述的就是类,服务员给你的就是对象 package com.xie public class Tel ...
- Redis学习--Redis数据类型
Redis的5种基本类型 1.String 2.Hash 3.List 4.Set 5.Sorted Set String常见用法 1.get key 返回value 2.set key value ...
- WordPress上传到互联网搭建
1.建站流程: 1.购买域名 2.购买空间 3.解析绑定 4.上传安装 2.购买域名 域名的购买可以到相关域名出售的服务商那儿买,如阿里云,主机庙.这里就不做详细解释了 3.购买空间 域名的购买可以到 ...
- jstack生成的Thread Dump日志线程 分析
文章转载自: https://www.javatang.com/archives/2017/10/25/36441958.html 前面文章中只分析了Thread Dump日志文件的结构,今天针对日志 ...
- 微信端修改title
function setTitle(t) { document.title = t; var i = document.createElement('iframe'); i.src = "i ...
- vue form表单验证
<el-select v-model="ruleForm.region" placeholder="请选择活动区域"> <el-option ...
- C# 关键字base用法
1.调用基类的方法 public class A { public virtual void Hello() { Console.WiriteLine("Hello"); } } ...
- openLDAP安装时无法操作根节点数据,提示的是This base cannot be created with PLA.
1.无法操作根节点数据,提示的是This base cannot be created with PLA. 解决办法 1)添加一个base.ldif文件,里面的dc和配置文件里的保持一致即可 dn: ...