首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对裸机使用pthread的交叉编译程序

对裸机使用pthread的交叉编译程序
EN

Stack Overflow用户
提问于 2013-06-13 22:28:55
回答 2查看 7.1K关注 0票数 0

好吧,这可能是一个非常笼统的问题,但我不太熟悉这个主题,也不喜欢任何提示。

我有一个用于ARM的交叉编译工具链( SoucereyCodeBench -xilinx-linux-gnueabi-)。我交叉编译了一个使用编译器选项的库:-DSC_INCLUDE_FX -DSC_USE_PTHREADS -pthreads -fPIC -DPIC

所以,如果我想使用裸机程序的库,我想我需要pthread来进行裸机编译器(arm-xilinx-eabi-)?

否则,我的程序从一开始就不能正常运行或编译。那么,可以为裸机编译pthread吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-14 16:45:59

我认为这将是移植你的代码的关键,而不是简单的交叉编译。顾名思义,POSIX线程(Pthread)采用POSIX API。

如果您需要裸机ARM目标上的线程,那么您至少需要一些具有many的线程调度库。大多数RTOS不是Linux意义上的完整操作系统,而是带有IPC机制的简单调度器,它们像其他库一样链接到您的单片应用程序的静态库-从系统直接引导到您的main()函数的意义上讲,它可能仍然算作“裸机”,在这里您负责创建任务/线程和启动调度器。

一些RTOS支持POSIX API,因此也支持pthread,但这些RTOS往往是更大、更完整的操作系统,而不是简单的调度器--无论哪种方式,它们通常比Linux更小、更具可扩展性,因此仍然可以满足您的“裸机”需求。

当然,没有什么能阻止您围绕任何RTOS库创建包装器,以提供pthread兼容的API,从而简化代码的移植。

票数 4
EN

Stack Overflow用户

发布于 2013-06-15 02:42:22

线程和裸机

裸机编程目标只提供您放在它们上面的内容。大多数人熟悉的pthread实现是Linux NPTL版本,它之所以能够工作,是因为Linux内核和GNU C库使其能够工作。在裸机目标上,您无法获得Linux内核或GNU C库的好处。您必须自带裸机线程库和运行时,但在这一点上,使用提供线程的RTOS可能会更好。

关于工具链前缀的注记

gcc工具链的前缀arm-xilinx-linux-gnueabi-表示目标是ARM Linux,而不是裸机。arm-xilinx-linux-gnueabi-工具链将构建支持pthread的代码(-lpthread),但它将假定Linux目标已经安装了pthread库和其他必要的软件层。

如果您切换到裸机版本的gcc ARM xilinx工具链,您的工具链前缀将是arm-xilinx-eabi-。我上面所说的关于裸机和线程的一切都将适用。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17089680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档