私は64ビットFreeBSDビルドマシンを持っています。 Python3アプリケーションコードにhttpsサポートを追加する必要があります。これを行うには、opensslサポートでPythonをビルド/コンパイルすることをお勧めします。最終実行可能ファイルには gcc 依存関係は必要ありません。
だから私はclangを使ってPythonを構築します。しかし、それ以前はopensslをビルドするときにこれを行うことはできませんでした。
私も「set CC clang」を使用しました。しかし、opensslはまだgccをcコンパイラとして使用しています。したがって、最終的な動的実行可能ファイルで「ldd」を実行すると、libcの依存関係が表示されます。
リンクには FreeBSD と clang の内容はありません。 (https://wiki.openssl.org/index.php/Compilation_and_Installation)
いくつかの選択肢を提案してもよろしいですか?
\bin\sh
[編集] これはシェルで実行するコマンドです
set CC clang
./config -fPIC
出力でgccが使用されていることを示す次の行が見つかりました。
BN_ASM =x86_64-gcc.o
答え1
以下にまとめたように、多くの問題を経験しているようです。あなたほぼ確実デフォルトのFreeBSD OpenSSLを使用する@mjturnerが指摘したPythonポートを使用する必要があります。
csh
構文でset CC clang
2つの変数と空の文字列を設定しますが、それでも機能しません(次のトピックを参照)。CC
clang
set CC=clang
- 単にシェルで変数を設定すると、
csh
実際に使用したい他の項目には影響しませんsetenv CC clang
(この変数は使用されません=
)。config
はsh
スクリプトなので、これを表示するには変数をエクスポートする必要があります。 libc
はいいいえ依存関係gcc
、動的に接続されたほとんどすべてがlibcに接続されます(FreeBSDではGNU glibcではありません)。もう一つの方法は接続することです。静的可能であれば、必須コードを最終バイナリに挿入して動的依存関係を削除します。 (一部のプラットフォームとの使用時に例外処理に依存する可能性gcc
があります。回避するのは難しいです。)Pythonを静的に接続する際に問題があると予想しています。libgcc
バイナリ配布(関連するライセンス契約を注意深く読んだと仮定)など、特定の目的のためにclangを使用してOpenSSLとPythonを構築したり、特定のソフトウェアバージョンの要件がある場合は正しく設定できることがわかりCC
ました。OpenSSLポートこれを行う代わりに、スクリプトからgcc
コマンドをパッチし、Configure
環境FREEBSDCC
変数を使用するように選択します。
その他の提案:
- clangの使用の詳細については、OpenSSL Wikiを参照してください。https://wiki.openssl.org/index.php/Compilation_and_Installation#Modifying_Build_Settings
clang
はい実際には取り上げましたが、FreeBSDではありません。なぜなら、すべてのBSDが等しいと見なされるからです。 - OpenSSLをビルドしてから必ず
make test
実行してください。 - すべてが同じコンパイラでコンパイルされていることを確認してください。つまり、
python
すべてがlib-dynload