2

Linux 用の C++ SFML プロジェクトを開始しました。私は .so がどこに行くべきか疑問に思っていました。ユーザーがプログラムを取得した後に簡単に実行できるように、プロジェクトフォルダー内に移動する必要がありますか? または、プログラムを実行する前に、Linux マシンに SFML ライブラリをインストールする必要がありますか?

4

3 に答える 3

2

ファイルを含めたとしても.so、ユーザーがそれを実行できるという保証はありません (異なるアーキテクチャ、異なる libc にリンクされたライブラリなど)。静的にリンクするか、さらに良いことに、サポート ライブラリ自体を提供するようにします。

@Joel J. Adamsonの使用する答えautoconfは良い考えです。SFML にはファイルが付属していないpkg-configため、次のように SFML を確認します。

dnl Checking for a C++ compiler
AC_PROG_CXX

dnl Checking C++ features. This tells configure to use the C++ compiler for checks.
AC_LANG_PUSH([C++])
dnl Check for a SFML header.
AC_CHECK_HEADER([SFML/Config.hpp], [], [AC_MSG_ERROR([SFML headers not found.])])
AC_LANG_POP([C++])

ライブラリのチェックは、名前マングリングなどのために少し難しくなります。詳細を知りたい場合は、Tyler McHenry がこの部分について良い記事を書いています。

于 2010-09-21T01:37:12.160 に答える
1

ディストリビューション レベルでは、SFML は依存関係になります。つまり、プログラムをコンパイルする前に、ユーザーがインストールする必要があります (または、パッケージ マネージャーがインストールする必要があります)。ユーザーがそれをコンパイルしたい場合は、ヘッダー ファイルも必要になります (多くの場合、インストールする別の「devel」パッケージがあります)。ファイルを配布する必要はありません。配布しない.so方が (誰にとっても) 良いでしょう。

ユーザーがそれを持っているかどうかを確認する必要があります。たとえば、autoconfconfigure.acを使用して、アプリケーション プロジェクトの関連するヘッダーを確認する必要があります。たとえば、数学ライブラリを確認するには、exp()関数を使用しているため、次を使用します

AC_CHECK_LIB([m], [exp])

ステップ中にチェックを作成しますconfigure。幸いなautoscanことに、これをチェックして、 というスケルトンconfigure.acファイルを作成できますconfigure.scanCmakeも参照してください。

HTH。

于 2010-09-20T20:10:11.503 に答える
0

プログラムが必要とする特定のライブラリ (およびバージョン) に依存するようにプログラムを作成する必要があります。rpm/deb ファイルにパッケージ化する予定がある場合は、そこに依存関係を追加して、パッケージ マネージャーがチェックして適用できるようにする必要があります (たとえば、apt は特定のパッケージのすべての依存関係パッケージをインストールできます)。

于 2010-09-20T20:14:57.433 に答える