Windows 7 上的 Cygwin G++ 链接器 (ld.exe) 找不到 libc.so.6 和其他库文件
Cygwin G++ linker (ld.exe) on Windows 7 cannot find libc.so.6 and other library files
我在 cygwin 终端中使用 g++ link 几个 c 目标文件和 c++ 目标文件一起成为一个共享的可执行文件。 linker 告诉我它找不到几个库。但是,我可以列出它们,使用 linker 声明它正在寻找它们的位置:
g++ -g -o myProg.so *.o -shared
c:/cygwin/bin/../lib/gcc/x86_64-vityan-linux-gnu/4.6.0/../../../../x86_64-vityan-linux-gnu/bin/ld.exe: *cannot find /lib/libc.so.6*
c:/cygwin/bin/../lib/gcc/x86_64-vityan-linux-gnu/4.6.0/../../../../x86_64-vityan-linux-gnu/bin/ld.exe: *cannot find /x86_64-vityan-linux-gnu/lib/libc_nonshared.a*
c:/cygwin/bin/../lib/gcc/x86_64-vityan-linux-gnu/4.6.0/../../../../x86_64-vityan-linux-gnu/bin/ld.exe: *cannot find /lib/ld-linux-x86-64.so.2*
collect2: ld returned 1 exit status
$ ls /lib/libc.so.6
/lib/libc.so.6
$ ls /x86_64-vityan-linux-gnu/lib/libc_nonshared.a
/x86_64-vityan-linux-gnu/lib/libc_nonshared.a
$ ls /lib/ld-linux-x86-64.so.2
/lib/ld-linux-x86-64.so.2
我尝试将 .so 文件重命名为 .dll 但没有成功。
我尝试使用 g++ 开关“--sysroot”(--sysroot=/cygdrive/c/cygwin/)但没有成功。
我尝试添加 g++ 开关 '-B /cygdrive/c/cygwin/lib/' 但没有成功。
真正让我感到困惑的是,大约 6 个月前我在一个类似的项目上做了同样的事情 - 没有问题。而且,系统清楚地显示库在那里。
缺少什么 ld.exe 需要找到这些文件?
我运行 快速分析我在 Cygwin 中安装了哪些包。我也有几个 mingw g++ 工具链包(没有用过),还有一些其他的东西。我只将 Cygwin 用于几个特定的项目,所以我重新安装了:删除了所有其他 g++ 工具链项目,并且只安装了 cygwin gcc 64 位工具链包。项目现在编译没有问题。结束问题。
我在 cygwin 终端中使用 g++ link 几个 c 目标文件和 c++ 目标文件一起成为一个共享的可执行文件。 linker 告诉我它找不到几个库。但是,我可以列出它们,使用 linker 声明它正在寻找它们的位置:
g++ -g -o myProg.so *.o -shared
c:/cygwin/bin/../lib/gcc/x86_64-vityan-linux-gnu/4.6.0/../../../../x86_64-vityan-linux-gnu/bin/ld.exe: *cannot find /lib/libc.so.6*
c:/cygwin/bin/../lib/gcc/x86_64-vityan-linux-gnu/4.6.0/../../../../x86_64-vityan-linux-gnu/bin/ld.exe: *cannot find /x86_64-vityan-linux-gnu/lib/libc_nonshared.a*
c:/cygwin/bin/../lib/gcc/x86_64-vityan-linux-gnu/4.6.0/../../../../x86_64-vityan-linux-gnu/bin/ld.exe: *cannot find /lib/ld-linux-x86-64.so.2*
collect2: ld returned 1 exit status
$ ls /lib/libc.so.6
/lib/libc.so.6
$ ls /x86_64-vityan-linux-gnu/lib/libc_nonshared.a
/x86_64-vityan-linux-gnu/lib/libc_nonshared.a
$ ls /lib/ld-linux-x86-64.so.2
/lib/ld-linux-x86-64.so.2
我尝试将 .so 文件重命名为 .dll 但没有成功。
我尝试使用 g++ 开关“--sysroot”(--sysroot=/cygdrive/c/cygwin/)但没有成功。
我尝试添加 g++ 开关 '-B /cygdrive/c/cygwin/lib/' 但没有成功。
真正让我感到困惑的是,大约 6 个月前我在一个类似的项目上做了同样的事情 - 没有问题。而且,系统清楚地显示库在那里。
缺少什么 ld.exe 需要找到这些文件?
我运行 快速分析我在 Cygwin 中安装了哪些包。我也有几个 mingw g++ 工具链包(没有用过),还有一些其他的东西。我只将 Cygwin 用于几个特定的项目,所以我重新安装了:删除了所有其他 g++ 工具链项目,并且只安装了 cygwin gcc 64 位工具链包。项目现在编译没有问题。结束问题。