gcc/ld在链接时不会跟随符号链接的文件

3

我当前正在从Ubuntu 11.04 (GCC 4.5)转换到Ubuntu 12.04(但我在Ubuntu 11.10上也遇到了相同的问题,GCC 4.6),现在我无法再编译我的一些项目。

我有一个自己构建的库,叫做liba,所以我得到:

liba.so.0.0.1 (real library)
liba.so.0  -> liba.so.0.0.1 (symbolic link)
liba.so    -> liba.so.0.0.1 (symbolic link)

但是当我尝试使用liba构建程序时:

gcc -o myprogram myprogram.c -la

我收到了一个错误提示,说我的库找不到:
/usr/bin/ld.bfd.real: cannot find -la

另一方面,如果我删除liba.so并将liba.so.0.0.1重命名为liba.so,则一切正常。或者使用完整的共享库文件名调用gcc也可以正常工作:
gcc -o myprogram myprogram.c -l:liba.so.0.0.1

很遗憾,由于版本问题,在我的构建系统中这两个解决方案都不可取。

有什么想法吗?

编辑:算了,我发现问题出在“新的”VMware不支持共享文件夹中的符号链接。现在使用NFS一切正常。

1个回答

1

请确保在 /etc/ld.so.conf 中提到了 liba 所在的位置,并运行 ldconfig。或者您可以使用 -Lpath 指定搜索路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接