私はcmake 3.6.2を含むCygwin 2.9.0-2を使用しています。私はcmake 2.8を使ってCentOS上で開発されたcmakeファイルを取得しようとしています。これは、さまざまなライブラリをインポートする大きなcmakeファイルであり、ユニットテストのすべてをコンパイルしてgtestを再度実行します。Cygwin gccにはどのようなライブラリタイプが必要ですか?
cygwin gccが入力をリンクするためのWindowsライブラリやLinuxライブラリを必要としているかどうか、またそれが何を生成するのかを完全に理解していません。 Cygwinは.a/.soや.lib/.dllファイルをライブラリにコンパイルするために期待しているのですか?同じものを作成するのでしょうか、まったく気にしません。結局のところ、それはWindows上で実行される実行可能ファイルをコンパイルしているので、私はそれが.lib/.dll
を生成するだけでなく、それらを期待することを期待するでしょう。
私はgtestリポジトリをクローンして、/usr/local/lib/libgtest.a
にビルドしてインストールしました。ベンダーの*.lib
ライブラリにリンクしましたが、リンカーはgtestライブラリを見つけることができません。 gtestcakeを変更して.a
の代わりに.lib
を生成する必要がありますか?
私はこのcmakeファイルを移植するのをやってみることができますが、私はどこから始めたらいいのか分からず、この理解の欠如が私を殺しています。私がこれを理解すれば、私は前進することについてより良い決定を下すことができると感じています。
Cygwin gccのmanページは、-lLibNameがリンクするファイルlibLibName.aを探すことを意味します。Linuxと同じです。すばらしいです。では、なぜVendorLib.libがリンクしていますか? (ライブラリを正しく検索して見つけるには、cmakeを入手してリンクエラーが消えてしまったので、すべての表示がリンクされている)
適切なドキュメントへのリンクがあれば、答えとして。それがあれば、私はドキュメントを見つけることができません。 TIA SOユーザー!
更新:
は、64ビットのLinuxのライブラリを使用するcmakeの設定、私はcmakeのから以下のメッセージ出力を得る:
-- Found Ballard library /usr/local/lib64/ballard/libbtiCard.so
-- Found Ballard library /usr/local/lib64/ballard/libbti1553.so
とmakeから次
/usr/local/lib64/ballard/libbtiCard.so: error adding symbols: File in wrong format
collect2: error: ld returned 1 exit status
Windows .lib
静的ライブラリでコンパイルすると、このエラーメッセージが表示されません。 .so
から.dll.a
に名前を変更しても何も変更されませんでした。
Cygwin用に特別なビルドは必要ありませんか? Cygwinではなく、ベンダーのライブラリに問題がありますか?その問題に対処するにはどうすればいいですか?
最終更新
私は/usr/local/lib64/vendor/libVendor.aに私のベンダーのWIN64/VENDOR.LIBをコピーしました。
私はそれはlib64に/パスを検索しますので、私はまた私のcmakeのファイルに次の行を追加
を/usr/local/include/vendor/*.hために私のベンダーのLinux/API64/*。時間をコピー:
Googleテスト/モックライブラリを/ usr/local/libから/ usr/local/lib64に移動しました。私が変更しなければならないこの質問に無関係の他の事柄がありましたが、これらはすべて他のSOの質問でカバーされています。なんて素晴らしいコミュニティなの!インポートライブラリをcygwinの上
フードの下で実行中の興味深いものがあるように見えます。彼らはmakefileとの互換性のために.a拡張子と.so拡張子を保持していたと思います。しかし、結局それはすべてのx86アセンブラとWindowのネイティブexe形式です。 – yacc
したがって、拡張子が.aになるようにWindowsライブラリの名前を変更する必要がありますか? – PfunnyGuy
名前の変更だけでは完了していないと思います。 .aと.dll.aの両方に '! 'プリアンブルと.dll.aはdllが埋め込まれているように見えません。 (例:libssp.dll.a) –
yacc