Cross-compilation 与图书馆

Cross-compilation with libraries

我正在使用 Eclipse DS-5 为 Altera SoC (FPGA+ARM) cross-compile 项目开发 Windows 7。工具链由Altera工具提供,如下所示:

GCC C++ Compiler 4 [arm-linux-gnueabihf]
GCC C Compiler 4 [arm-linux-gnueabihf]
GCC Assembler 4 [arm-linux-gnueabihf]
GCC C Linker 4 [arm-linux-gnueabihf]
GCC C++ Linker 4 [arm-linux-gnueabihf]
GCC Archiver 4 [arm-linux-gnueabihf]

Altera SoC 板在 ARM 上 运行ning Angstrom Linux 分布。

我需要添加一些库(例如 libcURL)并设置 Eclipse 项目设置,以将库包含在编译中。

我的理解: 库通常包含 2 个组件。 headers 和库定义文件(二进制格式)。编译器需要 header 个文件,然后链接器正在链接库文件。

(如有不妥之处,请指正)

我的问题:

1) 如果没有为 ARM 处理器提供二进制文件,我是否需要使用 Altera 工具在带有 ARM 编译器的 Windows 7 机器上编译库源代码? 我相信使用 Altera 提供的编译器终端 运行 ./configure, make

2) 对于像 libcURL 这样广泛使用的库,有 pre-compiled 个针对不同平台的二进制文件。我怎么知道编译后的库是什么样的? Eclipse编译整个工程需要哪些文件(请具体说明:*.lib, *.a, *.h, ...)

总结: 很困惑cross-compilation,我不确定,需要哪个编译器,需要哪些库文件

我遇到的最常见错误是:

cannot find -lcurl

这是否意味着编译器可以看到 *.h 文件,但链接器无法找到二进制文件?

最后,我做了以下事情:

我已将库源文件复制到我的目标平台 (Altera De_nano_SoC ARM) 并在那里编译库 (Angstrom Linux, compiler arm-angstrom-linux-gnueabi ).这需要在库文件夹中设置 configuration 文件,以及 运行 makemake install 命令.

编译后,我将输出文件(头文件 *.h 和静态库文件 *.a 或共享库文件 *.so - 取决于编译 配置)复制到我的主机(Windows 7)。然后我将这些文件添加到我的 Eclipse DS-5 项目中。

Eclipse 需要.../include 包含头文件*.h 的路径和.../lib 包含*.a 或*.so 文件的文件夹。