我目前正在从 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
不幸的是,由于我的构建系统中的版本控制原因,这两种解决方案对我来说并不理想。
想法?
编辑:没关系,我发现问题在于"new"vmware 不支持共享文件夹中的符号链接(symbolic link)。现在使用 NFS,一切都很好。
最佳答案
确定liba
的位置/etc/ld.so.conf
中提到了生活。并运行 ldconfig
.或者,您可以使用 -Lpath
提供搜索路径.
关于gcc/ld 链接时不遵循符号链接(symbolic link)文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9959692/