1
pocarisweat 2023-01-10 00:03:34 +08:00
建议还是 QEMU ,网络功能如果不是必需的话可以通过其他办法迂回解决,比如挂载数据到 iso 里。
如果要真机测的话,可以试试 Travis CI ,它们提供了 arm/ppc/z 的环境,但 ppc 似乎只有 ppc64le ,只有 z 是大端。而且好像要求是 GitHub 上的公开仓库。 https://linuxone.cloud.marist.edu/ 也许也可以申请一个临时的大端机环境。 https://godbolt.org/ 这个网站也可以试一下,看看有没有运行的选项。 或者方便的话(看到你说是开源库),可以提供点更多信息,也许我可以帮你测一下。 |
2
formoslian OP 太感谢了!昨晚发完帖子我就睡觉了,不好意思,没看到!
我先试试,如果太头疼就麻烦你帮我测试 hhhh 是 llvm/ libcxx 的一个库,那个分支拉代码下来大概 800M ,挂载 iso 总感觉不对劲 hhh godbolt.org 的实现是交叉编译 https://github.com/compiler-explorer/infra/pull/127 , 我有点没说清楚,因为还有个类似 gtest 的测试框架需要来运行正确性。 我去试试 travis CI 👍 |
3
formoslian OP @pocarisweat 第一次发帖,不是很熟悉回复功能,补一个 艾特
|
4
pocarisweat 2023-01-10 10:00:04 +08:00
@formoslian
是 32 位 Linux 上的老 PPC ?总之 libc++应该不会在大端下出问题,它对许多大端平台支持挺好的 |
5
formoslian OP |
6
formoslian OP docker 模拟 qemu ,目前看起来工作的挺顺利的
https://docs.gitlab.com/omnibus/development/s390x.html 我跑了一段 chatgpt 生成的代码 ``` root@c12d4066a1ef:~# g++ check_endian.cc -O2 -o is_big_endian\? root@c12d4066a1ef:~# ./is_big_endian\? Original Number: 258 Bytes: 1 2 System is Big Endian root@c12d4066a1ef:~# cat check_endian.cc #include <iostream> #include <cstring> int main() { short int num = 0x0102; char *num_ptr = (char*)# std::cout << "Original Number: " << num << std::endl; std::cout << "Bytes: "; for (int i = 0; i < sizeof(num); i++) { std::cout << (int)*(num_ptr + i) << " "; } std::cout << std::endl; if (*num_ptr == 0x01) { std::cout << "System is Big Endian" << std::endl; } else { std::cout << "System is Little Endian" << std::endl; } return 0; } root@c12d4066a1ef:~# lscpu | grep Endian Byte Order: Big Endian root@c12d4066a1ef:~# ``` |
7
formoslian OP |