【发布时间】:2016-01-16 07:49:50
【问题描述】:
我想从我的工作站(x86、linux)交叉编译一个用于 ARM 应用处理器的应用程序。首先,我为我的系统构建:
gcc -static -g -Wall -c main.c -o main.o
gcc -g -Wall main.o -o myApplication -lncurses
这个构建就像我想要的一样,也可以工作。如果我想为 arm 构建这个
arm-linux-gnueabi-gcc -static -g -Wall -c main.c -o main.o
arm-linux-gnueabi-gcc -g -Wall main.o -o myApplication -lncurses
但这不会编译。
/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/bin/ld: cannot find -lncurses
collect2: Error
那么:如何以这种方式交叉编译一个 ncurses 应用程序?
【问题讨论】:
-
您的 ARM 版本的 ncurses 库位于何处?除非你试图把它放在交联器的默认搜索路径覆盖的某个地方,否则你需要告诉它在哪里可以找到它。 /usr/lib/... 中的那个是 x86 代码。
-
我在我的所有目录中搜索它,但找不到它。我是否必须为自己的 arm 构建 ncurses 或者是否有任何软件包或 ppa 用于此 (ppa)?
-
真的,交叉编译时最好的办法是在主机上挂载目标设备的文件系统(或者只是在主机上保留一份副本)并使用
--sysroot=构建。毕竟,如果 that 没有正确的库,那么你的动态链接程序无论如何也不会在那里运行。
标签: linux arm cross-compiling ncurses