【发布时间】:2011-04-29 13:32:41
【问题描述】:
我正在使用来自http://dicom.offis.de/dcmtk.php.en 的开源 C++ 库 DCMTK。 我已经使用 VC++ IDE、MacOS Xcode、Mac iOS 模拟器在 Windows 上成功编译了这个库。 但我无法在 iOS 设备上编译这个库,因为它是基于 ARM 的架构。 DCMTK 库在 Intel 架构上编译得非常好。
现在我的问题陈述是:-
我需要通过交叉编译在 ARM 架构上编译这个 DCMTK C++ 库。 我正在使用 Ubuntu 64 位机器进行交叉编译。 我已经从http://www.gnuarm.com/ 安装了来自 GNU ARM 工具链的二进制文件 我正在为 Ubuntu 64 位机器使用 GCC 工具链 4.0 binutils-2.16.1、gcc-4.0.2-c-c++、newlib-1.14.0、insight-6.4、TAR BZ2 [65.5MB] 二进制文件进行 ARM 交叉编译。
在 Ubuntu 上安装这些二进制文件后,我将 PATH 环境变量设置为 PATH=$PATH/gnu_arm/bin
为了配置 DCMTK C++ 库,我在 shell 上运行了以下命令
CC=arm-elf-gcc CXX=arm-elf-g++ AR=arm-elf-ar RANLIB=arm-elf-ranlib ARFLAGS=cruv ./configure –prefix=$home_dicom –target=arm-elf –host =arm-elf –enable-std-includes –disable-threads
它会正确地创建一个 make 文件。现在我正在尝试使用 make 命令编译代码,但面临很多编译错误,例如:- 1) 我尝试编译我的第一个依赖 C++ 库,即 ofstd。 我收到了 DIR*、struct dirent、opendir()、closedir() 调用的错误。 它包含这些调用,但我没有在此头文件中找到上述调用的任何定义。
2) 当我编译另一个日志库时,出现以下错误,例如 错误:未在此范围内声明 nthos 错误:ntohl 未在此范围内声明 错误:未在此范围内声明 htons 错误:未在此范围内声明 htonl。 这些调用是网络调用,并未在 GNU ARM 工具的任何头文件中定义。
我尝试下载 ARM 二进制文件的源代码并解压缩 tar 文件,并尝试将丢失的头文件复制到 Ubuntu 上已安装的 GNU ARM。 对于某些文件,它在对复制的头文件进行更改后编译,而对于某些文件,它再次给出编译错误。由于缺少一些标准头文件,因此 DCMTK 库下存在的每个文件都会出现编译错误循环。
请建议是否有任何其他工具链可用于 Ubuntu 64 位机器上的 ARM 交叉编译。 或者除此之外的任何其他好的解决方案。
谢谢!!! 阿米特
【问题讨论】:
标签: ios cross-compiling