cygwing++;Windows 7上的链接器(ld.exe)找不到libc.so.6和其他库文件 我在CGWIN终端中使用G++来将多个C对象文件和C++对象文件链接在一起,成为一个共享的可执行文件。链接器告诉我有几个它找不到的库。但是,我可以使用链接器声明正在查找它们的位置列出它们:

cygwing++;Windows 7上的链接器(ld.exe)找不到libc.so.6和其他库文件 我在CGWIN终端中使用G++来将多个C对象文件和C++对象文件链接在一起,成为一个共享的可执行文件。链接器告诉我有几个它找不到的库。但是,我可以使用链接器声明正在查找它们的位置列出它们:,c++,g++,cygwin,C++,G++,Cygwin,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:*找不到/lib/libc.so.6* c:/cygwin/bin/./lib/gcc/x86_64-vityan-linux-gnu/4.6.0/../../../../../../../x86_64-vityan-lin


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:*找不到/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:*找不到/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:*找不到/lib/ld-linux-x86-64.so.2*
collect2:ld返回了1个退出状态

$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_非共享.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位工具链包。该项目现在编译没有问题。最后一个问题。

看起来您正在尝试为linux进行交叉编译,但没有安装库。你确定这就是你想要的吗?是的-尝试交叉编译以在Ubuntu 12.04 64位Linux上运行。我回到cygwin安装,检查了这些库以及我能找到的所有g++东西。cygwin的重新安装解决了这个问题。在另一个系统上发现了相同的问题,并深入研究了更多问题后,我认为根本原因是权限问题。我还没能证明这一点,但症状似乎表明了这一点。如果我弄清楚发生了什么,将更新进一步的评论。最后得到了这个-我们三个人看了看发生了什么:有一个源文件的副本:即source_file.cpp source_file_copy.cpp由于两个文件定义了相同的方法,链接器无法链接它们相应的对象文件。我猜不出为什么链接器没有打印出一条可能有助于确定这一点的消息。消除文件及其对应的“.o”文件的副本修复了该问题