由於缺少-fPIC
,我們正在追趕errors in our CMake makefiles。她是一個從ci20 MIPS開發板:檢測CMakeList.txt中的32位x86處理器?
...
[ 92%] Built target cryptopp-object
Scanning dependencies of target cryptopp-shared
Scanning dependencies of target cryptopp-static
Linking CXX static library libcryptopp.a
Linking CXX shared library libcryptopp.so
/usr/bin/ld: CMakeFiles/cryptopp-object.dir/cryptlib.cpp.o: relocation R_MIPS_HI16 against
`a local symbol' can not be used when making a shared object; recompile with -fPIC
CMakeFiles/cryptopp-object.dir/cryptlib.cpp.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
該項目的政策是我們到處PIC除了由於註冊的壓力32位x86。這意味着x86_64,ARM-32,Aarch32,Aarch64,MIPS,MIPS64,UltraSparc等獲得PIC。
我相信在CMAKE_SYSTEM_PROCESSOR
中提供了目標處理器。我遇到的問題是文檔沒有告訴我這些值,所以我無法弄清楚如何編寫「不是32位的x86」測試。
如何檢測CMakeList.txt中的32位x86處理器?
更好的是,我希望看到CMake設置CMAKE_SYSTEM_PROCESSOR
的處理器的完整列表。如果有人有這個清單,那麼提供它就太好了。
再次感謝弗洛裏安。我不知道「CMAKE_POSITION_INDEPENDENT_CODE」。我會添加它。 – jww
*「......將所有小端處理器作爲基於英特爾的處理器」* - 可能需要放鬆一點。我使用的所有ARM處理器都是LE。角落案例可能是一個PowerPC,比如老蘋果G5。它的BE,它需要-fPIC(IIRC)。我的地下室裏有一臺G5,用於測試圖書館的版本。當[Verizon修復其路由器中的端口轉發](https://www.google.com/search?q=verizon+prt+forwarding+broke)時,如果需要,我可以爲您提供遠程SSH訪問。 PF曾經工作,但VZ在4XX系列固件更新中破壞了它。你可以測試CMake,你喜歡:) – jww
@jww是的,我應該知道更好。對不起。我添加了更精確的「檢查預定義x86宏」版本。這應該做到這一點。 – Florian