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 文件,以及 运行 make 和 make install 命令.
编译后,我将输出文件(头文件 *.h 和静态库文件 *.a 或共享库文件 *.so - 取决于编译 配置)复制到我的主机(Windows 7)。然后我将这些文件添加到我的 Eclipse DS-5 项目中。
Eclipse 需要.../include 包含头文件*.h 的路径和.../lib 包含*.a 或*.so 文件的文件夹。
我正在使用 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 文件,以及 运行 make 和 make install 命令.
编译后,我将输出文件(头文件 *.h 和静态库文件 *.a 或共享库文件 *.so - 取决于编译 配置)复制到我的主机(Windows 7)。然后我将这些文件添加到我的 Eclipse DS-5 项目中。
Eclipse 需要.../include 包含头文件*.h 的路径和.../lib 包含*.a 或*.so 文件的文件夹。