关闭

gcc -rpath选项

标签: gcc rpath .so
144人阅读 评论(0) 收藏 举报
问题: 自己编写的.so库,编译链接时,均没问题,但运行时,提示无法找到 自己编写的.so库


------------------------------------------------------------------------------------------------------------------------------------


请教各位,linux默认为什么无法支持调用可执行文件当前目录下的动态链接库文件,比如.so文件,必须要设置export LD_LIBRARY_PATH=./,直接从本目录下搜索链接资源应该是很自然的选择,请问这样设计的初衷是什么?
------------------------------------------------------------------------------------------------------------------------------------


gcc中的-Wl,-rpath=<your_lib_dir>选项
gcc编译链接动态库时,很有可能编译通过,但是执行时,找不到动态链接库,那是


因为-L选项指定的路径只在编译时有效,编译出来的可执行文件不知道-L选项后面的值,


当然找不到。可以用ldd <your_execute>看看是不有 ‘not found’在你链接的库后面,


解决方法是通过-Wl,-rpath=<your_lib_dir>,使得execute记住链接库的位置


 


参考链接


http://gcc.gnu.org/ml/gcc-help/2005-12/msg00017.html




例如:
 gcc -o test test.c -L. -ltest -Wl,-rpath=/root/mycodes/codes/test

 gcc -o test test.c -L. -ltest -Wl,-rpath=.
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

gcc编译选项-Wl

-Wl选项告诉编译器将后面的参数传递给链接器。 -soname则指定了动态库的soname(简单共享名,Short for shared object name) -Wl 表示后面的参数也就是-s...
  • wang_hu_feng
  • wang_hu_feng
  • 2016-12-27 21:06
  • 1188

gcc常用编译选项 汇总

目录(?)[+]GCC编译器常用选项-E:只进行预处理,不编译 -S:只编译,不汇编 -c:只编译、汇编,不链接 -g:包含调试信息 -I:指定include包含文件的搜索目录 -o:输出成...
  • lee244868149
  • lee244868149
  • 2014-08-22 11:42
  • 2875

链接选项rpath,容易被忽略的一个功能

问题来源 最近在做一个项目的客户端的SDK,实现为一个动态链接库,其依赖于其他的若干个动态库文件。那么在利用SDK开发应用程序的时候,编译的时候除了链接SDK库本身,还得链接SDK库所依赖的库,这样编...
  • CJF_iceKing
  • CJF_iceKing
  • 2014-05-07 18:28
  • 8552

GCC常用编译选项

-g   只是编译器,在编译的时候,产生调试信息 -C   在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很方便的    -M  生成文件关联的信息。包含目标文件所依赖的所有源...
  • wangzhen209
  • wangzhen209
  • 2015-07-30 17:12
  • 6103

gcc -rpath 指定动态库路径

GNU/Linux GCC 指定动态库路径  详细讲述了Linux下动态库路径的作用。 作为编程人员,对这些应该有一个较为详细的了解。 在C/C++程序里经常会调用到外部...
  • v6543210
  • v6543210
  • 2015-04-01 17:02
  • 4275

动态库的链接和链接选项-L,-rpath-link,-rpath

原文地址:http://my.oschina.net/shelllife/blog/115958 链接动态库 如何程序在连接时使用了共享库,就必须在运行的时候能够找到共享库的位置。li...
  • xph23
  • xph23
  • 2014-07-27 01:12
  • 13588

gcc linker简要手册

名词解释: bfd (binary format description) : 是指GNU的bfd库项目,其目标是希望通过一种统一的接口来处理各种不同的目标文件。 Orphan sections ...
  • fdcp123
  • fdcp123
  • 2017-03-13 17:36
  • 243

Linux C编程(8) 使用相对路径加载动态库-rpath和$ORIGIN

商业程序如何加载自己的so 使用LD_LIBRARY_PATH的缺点是要实现设置LD_LIBRARY_PATH。不够自动化。那么大型的商业程序是如何加载自己的so呢。 这里以QtCreator为...
  • dreamcs
  • dreamcs
  • 2016-08-06 20:05
  • 2387

gcc编译器常用选项的含义

gcc(GNU Compiler Collection)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++、Object C、Jave等多种语言编写的程序。gcc又可以作为交叉编译工具...
  • arackethis
  • arackethis
  • 2015-02-01 10:59
  • 1352

GCC 编译优化选项解析

前言 网上关于编译优化的文章很多,但大多零零散散,不成体系,本文试图给出一个完整和清晰的优化思路,同时提供在实践中如何进行优化的详尽参考。但是,在介绍所有优化知识之前首先引用LFS-Book中的一句...
  • qq100440110
  • qq100440110
  • 2016-05-01 11:01
  • 1247
    个人资料
    • 访问:2392次
    • 积分:98
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条