[問題] 要怎麼在preprocess階段知道系統狀況

作者: wtchen (沒有存在感的人)   2016-12-11 17:49:59
開發平台(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的步驟?
感謝。
作者: Schottky (順風相送)   2016-12-11 18:05:00
System-specific Predefined Macros
作者: fatrabitree (胖兔子)   2016-12-11 18:07:00
可以看gcc要編成什麼target來決定吧
作者: Schottky (順風相送)   2016-12-11 18:07:00
上面是 compiler 自動定義的,除此之外 autoconf 也可以做一些測驗收集資訊,自己也可以用小花招偵測比如說在 Makefile 裡跑一個自己寫的小工具,把偵測結果用 macro 形式寫進 .h 裡面
作者: Bencrie   2016-12-11 18:37:00
在Makefile 裡 parse /proc/cpuinfo 然後餵 -D 給 cflags是說 ... 一般不會在 ARM 上面 build code 吧
作者: wtchen (沒有存在感的人)   2016-12-11 18:44:00
RPi3現在挺快,build 不大的code也還好感謝關鍵字,這就去找,謝謝。
作者: Schottky (順風相送)   2016-12-11 18:47:00
在 Raspberry Pi 或 BeagleBone 上面 build 還蠻正常的因為不需要再特別去建一整套 cross-compiler 專用環境了
作者: EdisonX (卡卡獸)   2016-12-11 19:03:00
rpi3 build 和影像相關的我覺得超慢。

Links booklink

Contact Us: admin [ a t ] ucptt.com