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

看板C_and_CPP (C/C++)作者 (沒有存在感的人)時間9年前 (2016/12/11 17:50), 9年前編輯推噓2(2011)
留言13則, 5人參與, 最新討論串1/1
開發平台(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

12/11 18:05, , 1F
System-specific Predefined Macros
12/11 18:05, 1F

12/11 18:07, , 2F
可以看gcc要編成什麼target來決定吧
12/11 18:07, 2F

12/11 18:07, , 3F
上面是 compiler 自動定義的,除此之外 autoconf 也可以
12/11 18:07, 3F

12/11 18:08, , 4F
做一些測驗收集資訊,自己也可以用小花招偵測
12/11 18:08, 4F

12/11 18:10, , 5F
比如說在 Makefile 裡跑一個自己寫的小工具,把偵測結果
12/11 18:10, 5F

12/11 18:11, , 6F
用 macro 形式寫進 .h 裡面
12/11 18:11, 6F

12/11 18:37, , 7F
在Makefile 裡 parse /proc/cpuinfo 然後餵 -D 給 cflags
12/11 18:37, 7F

12/11 18:38, , 8F
是說 ... 一般不會在 ARM 上面 build code 吧
12/11 18:38, 8F

12/11 18:44, , 9F
RPi3現在挺快,build 不大的code也還好
12/11 18:44, 9F

12/11 18:45, , 10F
感謝關鍵字,這就去找,謝謝。
12/11 18:45, 10F

12/11 18:47, , 11F
在 Raspberry Pi 或 BeagleBone 上面 build 還蠻正常的
12/11 18:47, 11F

12/11 18:47, , 12F
因為不需要再特別去建一整套 cross-compiler 專用環境了
12/11 18:47, 12F
找到一篇比較符合我想要做的: http://stackoverflow.com/questions/2224334/gcc-dump-preprocessor-defines cross compiler也適用... 不過只有很基本的設定,SSE只到2... ※ 編輯: wtchen (90.41.170.53), 12/11/2016 19:02:04

12/11 19:03, , 13F
rpi3 build 和影像相關的我覺得超慢。
12/11 19:03, 13F
※ 編輯: 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
文章代碼(AID): #1OJI59Jv (C_and_CPP)
文章代碼(AID): #1OJI59Jv (C_and_CPP)