LD_LIBRARY_PATH环境变量 与-L

solookin 2010-03-30 10:32:43
问一个问题(gcc):

LD_LIBRARY_PATH环境变量 和 编译时使用-L参数是不是等价的?

我觉得都是指定库的路径。

它们之间有区别吗?谢谢
...全文
555 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
solookin 2010-03-30
  • 打赏
  • 举报
回复
OK,结贴了
pengxn 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 solookin 的回复:]
引用 8 楼 pengxn 的回复:

要明白,编译和链接是2回事

LD_LIBRARY_PATH链接时使用

-L编译时使用,分开了解


据我所知,-L是链接时使用。

而上面有人说LD_LIBRARY_PATH是运行时使用。

你却说LD_LIBRARY_PATH是链接时使用。。。
[/Quote]对,打错字了。LD_LIBRARY_PATH是运行时使用
solookin 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 pengxn 的回复:]

要明白,编译和链接是2回事

LD_LIBRARY_PATH链接时使用

-L编译时使用,分开了解
[/Quote]

据我所知,-L是链接时使用。

而上面有人说LD_LIBRARY_PATH是运行时使用。

你却说LD_LIBRARY_PATH是链接时使用。。。
pengxn 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 solookin 的回复:]
那就是LD_LIBRARY_PATH与编译没有关系呗?

还有一个问题,就是ld这个连接程序的名字是哪个英文的缩写?想也想不出来。

解决了就给结贴了。。。。
[/Quote]
要明白,编译和链接是2回事

LD_LIBRARY_PATH链接时使用

-L编译时使用,分开了解

solookin 2010-03-30
  • 打赏
  • 举报
回复
那就是LD_LIBRARY_PATH与编译没有关系呗?

还有一个问题,就是ld这个连接程序的名字是哪个英文的缩写?想也想不出来。

解决了就给结贴了。。。。
solookin 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pengxn 的回复:]

:Linux系统中,通常变量 LD_LIBRARY_PATH就是能用来指定函数库查找路径的,而且这个路径通常是在查找标准的路径之前查找。
[/Quote]

-L也有这个功能,谢谢
FancyMouse 2010-03-30
  • 打赏
  • 举报
回复
LD_LIBRARY_PATH还提供运行时链接库的候选路径。这个和编译完全没关系。
pengxn 2010-03-30
  • 打赏
  • 举报
回复
分数不给我就太坏了
yanran_hill 2010-03-30
  • 打赏
  • 举报
回复
不一样,
LD_LIBRARY_PATH是环境变量,用于程序运行时,搜索.so的路径
而-L,是编译时查找.o或者.so文件所在的目录,用于连接生成可执行文件
pengxn 2010-03-30
  • 打赏
  • 举报
回复
指定完整的绝对路径
$ cc -o a.out main.c /prod/lib/libabc.a
指定相对路径
$ cc -o a.out main.c ../../prod/lib/libabc.a
指定当前目录下的库
$ ls main.c libabc.a
libabc.a main.c
$ cc -o a.out main.c libabc.a
指定库文件名和搜索路径
$ cc -o a.out main.c -L/prod/lib –labc

后面2种编译出来的程序,可以在任意目录下执行

注意当使用-bnoipath时,不会执行文件的头区保存路径信息。






头区保存路径信息,会影响执行时候,库的搜索路径。对于编译期路径的指定和执行期路径的搜索是2个不同的概念,注意不要混淆。
pengxn 2010-03-30
  • 打赏
  • 举报
回复
不是的

:Linux系统中,通常变量 LD_LIBRARY_PATH就是能用来指定函数库查找路径的,而且这个路径通常是在查找标准的路径之前查找。这个是非常有用的,特别是在调试一个新的函数库的时候,或在特别的场合使用一个非标准的函数库的时候。环境变量LD_PRELOAD列出了所有共享函数库中需要优先加载的库文件,功能和 /etc/ld.so.preload类似。这些都是有/lib/ld-linux.so这个loader来实现的。值得一提的是, LD_LIBRARY_PATH能在大部分的UNIX-linke系统下正常起作用,不过并非所有的系统下都能使用,例如HP-UX系统下,就是用 SHLIB_PATH这个变量,而在AIX下则使用LIBPATH这个变量。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧