【问题标题】:Calling Shared Libraries in Ubuntu在 Ubuntu 中调用共享库
【发布时间】:2013-07-16 19:40:25
【问题描述】:

在 Ubuntu 12.04.1 LTS 中,我使用以下代码创建了一个 .so 库文件:

g++ -c -Wall -Werror -fPIC someCode.cpp
g++ -shared -o libSomeCode.so someCode.o

我需要在可执行文件中使用该库文件。但是在运行 .exe 时找不到 .so 文件。所以我必须将库复制到/usr/lib/。我尝试使用这个命令(没有成功):

export LD_LIBRARY_PATH=/home/personalFolder/Desktop/codeFolder:$LD_LIBRARY_PATH

有没有办法避免将 .so 复制到 /usr/lib/?

提前致谢。

【问题讨论】:

  • LD_LIBRARY_PATH 方法应该可以工作。设置变量后,您是否在同一个 shell 中运行了可执行文件?另外,当您说.exe 时,您指的是为您的平台编译的可执行文件,对吗?不是 Windows 可执行文件..?
  • 好吧,在 shell 中手动设置 LD_LIBRARY_PATH 后它可以工作,但是当语句位于 makefile 中时它会失败。我尝试使用 ldconfig 但它需要 root 权限(我正在避免它们)
  • 你可以试试-rpath:stackoverflow.com/a/695684/1538531
  • 好的,但是我得到了:cc: error: unrecognized option ‘-rpath’
  • 如果它在 makefile 配方中,那么您必须将它放在 同一 shell 实例上。这可以通过放置一个'; \' 在调用程序之前设置 LD_LIBRARY_PATH 行的末尾。您最好对应用程序的链接使用 rpath 设置,以便它可以找到库。

标签: c++ linux ubuntu


【解决方案1】:

添加“;\”解决了我的问题。

【讨论】:

  • 请让答案足够清楚,这样它就可以在不使用上面的 cmets 作为上下文的情况下独立存在。
猜你喜欢
  • 2019-08-23
  • 1970-01-01
  • 2016-04-25
  • 2015-09-30
  • 2018-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
相关资源
最近更新 更多