Poco交叉编译之iOS

POCO GNU平台编译方法(CYGWIN,Mac OS, Linux, Unix)

1 下载poco-1.4.4.tar.gz,解压进入到Poco源代码的目录;
2 设置编译选项。在源代码目录中执行命令./configure --static --no-tests --no-samples --no-sharedlibs,
命令执行完成后会把编译选项写入同目录下的config.make文件中;
3 直接Make或者make all就可以完成。为加快编译,可加上-j4选项;
4 编译后的库在lib\CYGWIN\i686下,包含debug版和release版,例cygPocoFoundationd.a和cygPocoFoundation.a


POCO iOS和iOS模拟器平台方法
1 修改Build/Config目录下的iPhone文件

IPHONE_SDK ?= iPhoneOS
IPHONE_SDK_ROOT = /Applications/Xcode.app/Contents/Developer/Platforms/$(IPHONE_SDK).platform/Developer/SDKs
IPHONE_SDK_ROOT_DIR = $(IPHONE_SDK_ROOT)/$(IPHONE_SDK)
IPHONE_SDK_BASE = $(shell ls -d $(IPHONE_SDK_ROOT_DIR)$(IPHONE_SDK_VERSION)*.sdk | tail -1)
IPHONE_SDK_VERSION_MIN ?= $(patsubst .sdk,,$(patsubst $(IPHONE_SDK_ROOT_DIR)%,%,$(IPHONE_SDK_BASE)))

POCO_TARGET_OSNAME ?= $(IPHONE_SDK)
POCO_TARGET_OSARCH ?= armv7
TOOL_PREFIX ?= /Applications/Xcode.app/Contents/Developer/Platforms/$(IPHONE_SDK).platform/Developer/usr/bin/
OSFLAGS ?= -arch $(POCO_TARGET_OSARCH) -isysroot $(IPHONE_SDK_BASE) -mthumb -miphoneos-version-min=$(IPHONE_SDK_VERSION_MIN)

2. 编译
  1. build for iOS device, armv6 and armv7
    ./configure --config=iPhone --no-tests --no-samples --omit=...
    make IPHONE_SDK_VERSION_MIN=3.0 POCO_TARGET_OSARCH=armv6 -s -j4
    make IPHONE_SDK_VERSION_MIN=3.2 POCO_TARGET_OSARCH=armv7 -s -j4
  2. build for simulator
    ./configure --config=iPhoneSimulator --no-tests --no-samples --omit=...
    make -s -j4
    3 生成的文件在Libs下
### Poco 库在申威架构上的交叉编译指南 对于在申威架构上进行Poco库的交叉编译,遇到`include location "/usr/include/" is unsafe for cross-compilation`这样的错误提示表明当前构建环境尝试访问主机系统的头文件路径而不是目标平台的相关资源[^1]。这通常是因为配置脚本未能正确设置交叉编译所需的选项。 为了成功完成针对申威架构的Poco交叉编译工作,建议遵循如下指导: #### 配置CMake工具链文件 创建一个特定于申威架构的CMake Toolchain file (例如 `sw_cmake_toolchain.cmake`) 来指定交叉编译器以及必要的系统根目录和其他细节: ```cmake set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR sw) # 设置交叉编译器前缀, 假设为'sw-' set(TOOLCHAIN_PREFIX /path/to/toolchain/bin/sw-) set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc) set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++) # 定义sysroot位置以避免使用宿主机器上的标准库和头文件 set(CMAKE_SYSROOT /opt/shenwei/sys-root) # 调整默认行为以便查找程序、库和包含文件都在sysroot内执行 set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) ``` #### 修改Poco CMakeLists.txt 或 使用额外参数 如果可能的话,在项目的顶层`CMakeLists.txt`中移除任何指向本地 `/usr/include` 的 `-I` 参数;或者当调用 cmake 时通过命令行传递合适的变量覆盖这些值: ```bash cmake \ -DCMAKE_TOOLCHAIN_FILE=./sw_cmake_toolchain.cmake \ -DPOCO_STATIC=ON \ .. ``` 上述操作确保了即使存在不安全的 include path,默认情况下也不会被采用。 #### 构建过程中的注意事项 确保所有依赖项都已适配并可用作静态库形式供链接阶段使用。此外,还需注意某些特性或模块可能会因为缺少支持而无法正常编译,这时可以根据实际情况调整源码或是禁用相应功能。 #### 编译完成后验证安装包 最后一步是在模拟环境中测试生成的目标二进制文件能否顺利运行,并确认其确实只依赖预期之内的动态链接库。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值