gcc为系统llibrary使用错误的ldfile

gcc为系统llibrary使用错误的ldfile,c,gcc,ld,C,Gcc,Ld,我试图为ARM(Xvisor)编译一个开源项目,但显然gcc使用了错误的ldfile来链接库libncurse。事实上,在编译时,我遇到了以下错误: /usr/gnat/bin/../libexec/gcc/x86_64-pc-linux-gnu/6.3.1/ld: cannot find libncurses.so.5 而且ldconfig中似乎有这个库 ldconfig -p | grep "curse" libncursesw.so.5 (libc6,x86-64) => /lib

我试图为ARM(Xvisor)编译一个开源项目,但显然gcc使用了错误的ldfile来链接库
libncurse
。事实上,在编译时,我遇到了以下错误:

/usr/gnat/bin/../libexec/gcc/x86_64-pc-linux-gnu/6.3.1/ld: cannot find libncurses.so.5
而且
ldconfig
中似乎有这个库

ldconfig -p | grep "curse"
libncursesw.so.5 (libc6,x86-64) => /lib/x86_64-linux-gnu/libncursesw.so.5
libncurses.so.5 (libc6,x86-64) => /lib/x86_64-linux-gnu/libncurses.so.5
libncurses.so.5 (libc6) => /lib/i386-linux-gnu/libncurses.so.5
libncurses.so.5 (libc6) => /lib32/libncurses.so.5

我不明白为什么gcc使用gnat ldfile而不是系统ldfile

解决方案是Makefile使用
gcc
工具而不是交叉编译gcc:
arm-eabi-gcc
解决方案是Makefile使用
gcc
工具而不是交叉编译gcc:
arm-eabi-gcc
尝试重新安装构建基本包

sudo apt-get remove build-essential && sudo apt-get install build-essential

/usr/gnat
不是系统库的主目录

请尝试重新安装build essential软件包

sudo apt-get remove build-essential && sudo apt-get install build-essential

/usr/gnat
不是系统库的主目录

您可能正在尝试将主机库链接到交叉编译的应用程序。@arrowd您知道我可以链接正确的库吗?我不明白为什么在Debian上它能工作,而在Ubuntu上却不行。如何链接库以及如何识别项目中的lib文件如箭头所示。实际上,它似乎来自交叉编译。Makefile无法成功读取本地导出变量$CROSS\u COMPILE。因此,Makefile使用gcc而不是arm-eabi-gcc。你知道吗?看来你在调用主机编译器。相反,您应该调用交叉编译器,比如
armlinux-gnueabi-gcc
。此外,您可能需要交叉binutils。看到这个答案:好的,谢谢你们。实际上,makefile是不正确的。所以我更正了。您可能正试图将主机库链接到交叉编译的应用程序。@arrowd您知道我可以链接正确的库吗?我不明白为什么在Debian上它能工作,而在Ubuntu上却不行。如何链接库以及如何识别项目中的lib文件如箭头所示。实际上,它似乎来自交叉编译。Makefile无法成功读取本地导出变量$CROSS\u COMPILE。因此,Makefile使用gcc而不是arm-eabi-gcc。你知道吗?看来你在调用主机编译器。相反,您应该调用交叉编译器,比如
armlinux-gnueabi-gcc
。此外,您可能需要交叉binutils。看到这个答案:好的,谢谢你们。实际上,makefile是不正确的。所以我纠正了它。