作者wtchen (没有存在感的人)
看板C_and_CPP
标题[问题] 要怎麽在preprocess阶段知道系统状况
时间Sun Dec 11 17:49:59 2016
开发平台(Platform): (Ex: Win10, Linux, ...)
Linux (arm or x86)
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
gcc
问题(Question):
想知道有没有可能在preprocess阶段就知道系统的大概状况?
(Makefile没有特别设定的情况下自动去判别)
例如哪种CPU/SoC(x86 or arm),然後该CPU/SoC可以使用哪种指令集。
这样我可以用
#ifdef ...
#else ...
#endif
去决定该编译哪一段对应该CPU/SoC的程式码。
(我想这应该不可能在compile阶段搞吧?)
还是我只能用shell script去抓/proc里面的设定然後指定make的步骤?
感谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 90.41.170.53
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1481449801.A.4F9.html
1F:→ Schottky: System-specific Predefined Macros 12/11 18:05
2F:→ fatrabitree: 可以看gcc要编成什麽target来决定吧 12/11 18:07
3F:→ Schottky: 上面是 compiler 自动定义的,除此之外 autoconf 也可以 12/11 18:07
4F:→ Schottky: 做一些测验收集资讯,自己也可以用小花招侦测 12/11 18:08
5F:→ Schottky: 比如说在 Makefile 里跑一个自己写的小工具,把侦测结果 12/11 18:10
6F:→ Schottky: 用 macro 形式写进 .h 里面 12/11 18:11
7F:推 Bencrie: 在Makefile 里 parse /proc/cpuinfo 然後喂 -D 给 cflags 12/11 18:37
8F:→ Bencrie: 是说 ... 一般不会在 ARM 上面 build code 吧 12/11 18:38
9F:→ wtchen: RPi3现在挺快,build 不大的code也还好 12/11 18:44
10F:→ wtchen: 感谢关键字,这就去找,谢谢。 12/11 18:45
11F:→ Schottky: 在 Raspberry Pi 或 BeagleBone 上面 build 还蛮正常的 12/11 18:47
12F:→ Schottky: 因为不需要再特别去建一整套 cross-compiler 专用环境了 12/11 18:47
找到一篇比较符合我想要做的:
http://stackoverflow.com/questions/2224334/gcc-dump-preprocessor-defines
cross compiler也适用...
不过只有很基本的设定,SSE只到2...
※ 编辑: wtchen (90.41.170.53), 12/11/2016 19:02:04
13F:推 EdisonX: rpi3 build 和影像相关的我觉得超慢。 12/11 19:03
※ 编辑: wtchen (90.41.170.53), 12/11/2016 19:05:14
会问这个主要是之前帮忙review别人的project,
看到他们用arm跟intel的指令集分别做优化,
想说有无办法不要分成两个branch直接在preprocess做。
※ 编辑: wtchen (90.41.170.53), 12/11/2016 19:06:55
※ 编辑: wtchen (90.41.170.53), 12/11/2016 21:22:22