gcc为系统llibrary使用错误的ldfile
我试图为ARM(Xvisor)编译一个开源项目,但显然gcc使用了错误的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
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是不正确的。所以我纠正了它。