GNU Linker 找不到本地共享库
GNU Linker doesn't find a local shared library
我在linux上,我的链接器找不到我的本地库。
当我运行时
ld -L<path to my lib dir> OpenImageIo
我得到
ld: cannot find OpenImageIO: No such file or directory
但是libOpenImageIo在这里:
[k.masson@hauser24 lib64]$ ll
total 7856
lrwxrwxrwx 1 k.masson k.masson 21 May 4 17:53 libOpenImageIO.so -> libOpenImageIO.so.1.5
lrwxrwxrwx 1 k.masson k.masson 24 May 4 17:53 libOpenImageIO.so.1.5 -> libOpenImageIO.so.1.5.24
-rwxr-xr-x 1 k.masson k.masson 7542440 May 2 16:41 libOpenImageIO.so.1.5.24
lrwxrwxrwx 1 k.masson k.masson 26 May 4 17:53 libOpenImageIO_Util.so -> libOpenImageIO_Util.so.1.5
lrwxrwxrwx 1 k.masson k.masson 29 May 4 17:53 libOpenImageIO_Util.so.1.5 -> libOpenImageIO_Util.so.1.5.24
-rwxr-xr-x 1 k.masson k.masson 499288 May 2 16:41 libOpenImageIO_Util.so.1.5.24
drwxrwxr-x 3 k.masson k.masson 27 May 4 17:18 python2.7
文件似乎是正确的
[k.masson@hauser24 lib64]$ file libOpenImageIO.so.1.5.24
libOpenImageIO.so.1.5.24: ELF 64-bit LSB shared object, x86-64,
version 1 (GNU/Linux), dynamically linked,
BuildID[sha1]=4ba0f0a40dc1287cf1a74b2530d3d0837765868b, stripped
我不知道为什么我的链接器找不到我的库,我尝试了其他自定义库,但问题是一样的你知道为什么吗?
我不知道为什么我的链接器找不到我的库
因为你没有要求它。这个命令:
ld -L<path to my lib dir> OpenImageIo
要求链接器将名为(字面意思为)OpenImageIo
的文件链接到a.out
。
你可能想这样做:
gcc -o your-exe foo.o bar.o -L<path-to-lib-dir> -lOpenImageIo
请注意,您应该几乎永远不要使用ld
链接UNIX系统上的任何内容。看到这个答案有一些原因。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 在cuda线程之间共享大量常量数据
- 如何从具有移动语义的类对象中生成共享指针
- 在c代码之间共享数据的最佳方式
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 将静态库链接到不带-fPIC的共享库中
- 为什么std::互斥需要很长的、非常不规则的时间来共享
- 使用Boost Interprocess创建托管共享内存需要很长时间
- 无法在Ubuntu上将共享库与Eclipse链接
- 从python调用openMP共享库时,未定义opnMP函数
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 为什么我的共享库中存在展开符号
- 使用共享指针的函数调用,其对象应为 const
- 具有两个独占锁组的共享锁
- 共享队列的线程安全
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- Linker使用CMAKE在MacOS上共享库的链接器
- GNU Linker 找不到本地共享库
- cygwin g++ Linker 找不到共享库