如何不在其他机器(x86_64 Linux)上运行 Pi 特定代码? [关闭]

Posted

技术标签:

【中文标题】如何不在其他机器(x86_64 Linux)上运行 Pi 特定代码? [关闭]【英文标题】:How not to run Pi specific code in other machines (x86_64 Linux)? [closed] 【发布时间】:2016-06-03 01:08:47 【问题描述】:

在编写 Raspberry Pi 应用程序时,我大部分时间都使用我的 PC,因为它比 Pi 快一点。

今天我在调用 WiringPi 特定代码 (wiringPiSetup();) 时收到以下消息:

piBoardRev: Unable to determine board revision from /proc/cpuinfo
 -> No hardware line
 ->  You may want to check:
 ->  http://www.raspberrypi.org/phpBB3/viewtopic.php?p=184410#p184410

我想跳过特定于 Raspberry Pi 的代码(例如这个 WiringPi 部分),但在 PC 上运行时执行其余部分。

实际上我应该如何处理这个问题?

【问题讨论】:

此时,只有您看到了您的代码,因此只有您知道要切割哪些部分。通常,您需要模拟无法在 PC 上运行的部分。 我应该像插件一样在运行时运行 Pi 特定的代码吗? 不,只需编写您自己的替换库来模拟您要替换的库的功能。 我从未接触过模拟区域。您介意就使用哪些工具提供介绍性建议吗(赞赏跨 Linux/Windows 的可移植性)? 【参考方案1】:

我的第一个解决方案是将特定于 pi 的代码包含在类似

#ifdef __arm__
  /* pi specific stiff */
#endif

我现在手头没有 PI,所以我不确定宏 __arm__ 是否正确,但 gccg++ 应该可以工作,请参阅 sourceforge article on architecture defines。

这比模拟所有内容要容易得多,但另一方面,代码甚至没有在您的 PC 上编译,因此这里甚至不会出现编译器错误。

【讨论】:

“代码甚至没有在你的 PC 上编译” 是一种冒险的假设......有交叉编译器,你知道......事实上有一整套交叉编译器模拟器,很可能在你的PC上为另一个平台编写、编译和运行代码,这就是我几年前的谋生手段

以上是关于如何不在其他机器(x86_64 Linux)上运行 Pi 特定代码? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

x86机器上运行arm64 docker

在 x86_64 linux 机器上编译 gentoo-bionic

mac上的架构x86_64错误的未定义符号

HTML5 视频无法在 IOS 设备上播放,但在其他任何地方都可以正常播放

在 64 位机器上编译 tcpsplice

离子性A的问题发生了启动处理的预建 windows的x86_64的 BIN mips64el-Linux的机器人条