我目前正在从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,一切都很好。
答案 0 :(得分:1)
确保liba
中提及/etc/ld.so.conf
所在的位置并运行ldconfig
。或者,您可以使用-Lpath
提供搜索路径。