看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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://www.ptt.cc/bbs/C_and_CPP/M.1481449801.A.4F9.html
Schottky: System-specific Predefined Macros 12/11 18:05
fatrabitree: 可以看gcc要編成什麼target來決定吧 12/11 18:07
Schottky: 上面是 compiler 自動定義的,除此之外 autoconf 也可以 12/11 18:07
Schottky: 做一些測驗收集資訊,自己也可以用小花招偵測 12/11 18:08
Schottky: 比如說在 Makefile 裡跑一個自己寫的小工具,把偵測結果 12/11 18:10
Schottky: 用 macro 形式寫進 .h 裡面 12/11 18:11
Bencrie: 在Makefile 裡 parse /proc/cpuinfo 然後餵 -D 給 cflags 12/11 18:37
Bencrie: 是說 ... 一般不會在 ARM 上面 build code 吧 12/11 18:38
wtchen: RPi3現在挺快,build 不大的code也還好 12/11 18:44
wtchen: 感謝關鍵字,這就去找,謝謝。 12/11 18:45
Schottky: 在 Raspberry Pi 或 BeagleBone 上面 build 還蠻正常的 12/11 18:47
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
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