-fPIC
の不足のためにerrors in our CMake makefilesがキャッチされています。彼女はci20 MIPS devのボードからの一つだ: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
プロジェクトの方針は、圧力を登録するため、32ビットx86以外どこでも、私たちにPICです。つまり、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です。コーナーケースは、古いApple G5のPowerPCと言えます。そのBEであり、-fPIC(IIRC)が必要です。私はライブラリのBEビルドをテストするために、私の地下にG5の1つを持っています。 [Verizonがルータのポート転送を修正する](https://www.google.com/search?q=verizon+prt+forwarding+broke)、必要に応じてリモートSSHアクセスを提供できます。 PFは動作していましたが、VZは4XXシリーズのファームウェアアップデートでそれを壊しました。あなたは、あなたが好きなすべてのCMakeをテストすることができます:) – jww
@jwwええ、私はよく知っている必要があります。そのために残念。はるかに正確な "定義済みx86マクロのチェック"バージョンを追加しました。それはそれを行う必要があります。 – Florian