作者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/m.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